赞
踩
Qt使用信号和槽机制来完成对象之间的协同操作,说白了就是这边发射一个信号(操作),那边接受信号,并完成操作。好比我让你干什么事,你接到命令后就去干这个事。我们需要做以下几步。**首先头文件中声明这个槽函数,然后在.cpp文件中定义这个槽函数,也就是把需要做什么事这个活动内容写下来,最后在.cpp文件中的构造函数里面连接信号与槽,用connect()函数。**下面粘贴两端代码:
自动连接,不需要connect(),但是槽函数名需要设置成,举例:on_函数名_clicked
.h
#ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> namespace Ui { class MyWidget; } class MyWidget : public QWidget { Q_OBJECT public: explicit MyWidget(QWidget *parent = 0); ~MyWidget(); private: Ui::MyWidget *ui; public slots: void on_showChildButton_clicked(); }; #endif // MYWIDGET_H
.cpp
#include "mywidget.h" #include "ui_mywidget.h" #include <QDialog> MyWidget::MyWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MyWidget) { ui->setupUi(this); } MyWidget::~MyWidget() { delete ui; } void MyWidget::on_showChildButton_clicked() { QDialog *dialog = new QDialog(this); dialog->show(); }
手动连接:需要connect()
.h
#ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> namespace Ui { class MyWidget; } class MyWidget : public QWidget { Q_OBJECT public: explicit MyWidget(QWidget *parent = 0); ~MyWidget(); private: Ui::MyWidget *ui; //声明槽 public slots: void showChildDialog(); }; #endif // MYWIDGET_H
.cpp
#include "mywidget.h" #include "ui_mywidget.h" #include <QDialog> MyWidget::MyWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MyWidget) {//构造函数 ui->setupUi(this); connect(ui->showChildButton, &QPushButton::clicked, this, &MyWidget::showChildDialog);//信号和槽连接 } MyWidget::~MyWidget() {//析构函数 delete ui;//释放 } void MyWidget::showChildDialog() {//函数内容 QDialog *dialog = new QDialog(this); dialog->show(); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。