您现在的位置是:首页 > 技术文章网站首页技术文章
[Qt]信号与槽Demo
简述 QT中 信号与槽 实例
效果:
Dialog.h
#ifndef DIALOG_H #define DIALOG_H #include <QDialog> #include "frame.h" QT_BEGIN_NAMESPACE namespace Ui { class Dialog; } QT_END_NAMESPACE class Dialog : public QDialog { Q_OBJECT public: Dialog(QWidget *parent = nullptr); ~Dialog(); void ShowWinget(); //显示处理(槽) /*自定义信号 signals*/ signals: void Test001(); //信号 private slots: void on_pushButton_clicked(); //信号 与 槽处理 void on_pushButton_2_clicked(); //单纯显示操作 private: Ui::Dialog *ui; Frame *framet = nullptr; //分配Frame 空间指针并赋值为空 }; #endif // DIALOG_H
Dialog.cpp
#include "dialog.h" #include "ui_dialog.h" Dialog::Dialog(QWidget *parent) : QDialog(parent) , ui(new Ui::Dialog) { ui->setupUi(this); ui->widget->setStyleSheet("background: yellow"); //设置Widget控件背景颜色 ui->widget->setVisible(true); //默认可见显示 } Dialog::~Dialog() { delete ui; } void Dialog::ShowWinget() //显示操作(槽) { ui->widget->setVisible(true); //设置可见 为 true } void Dialog::on_pushButton_clicked() //处理信号与槽 { ui->widget->setVisible(false); if(framet == nullptr) { framet = new Frame(this); //new Frame空间 加上 This 表示显示在主窗口内 framet->show(); //点击关闭弹出窗口2 framet->move(60,60); //显示坐标 connect(framet, &Frame::clicked, this, &Dialog::ShowWinget); //信号 与 槽 }else{ framet->show(); } } void Dialog::on_pushButton_2_clicked() //显示操作 { ui->widget->setVisible(true); //设置可见 为 true framet->hide(); //关闭窗口2 }
Frame.h
#ifndef FRAME_H #define FRAME_H #include <QFrame> namespace Ui { class Frame; } class Frame : public QFrame { Q_OBJECT public: explicit Frame(QWidget *parent = nullptr); ~Frame(); signals: void clicked(); //发送信号 private slots: void on_pushButton_clicked(); private: Ui::Frame *ui; }; #endif // FRAME_H
Frame.cpp
#include "frame.h" #include "ui_frame.h" #include "dialog.h" Frame::Frame(QWidget *parent) : QFrame(parent), ui(new Ui::Frame) { ui->setupUi(this); } Frame::~Frame() { delete ui; } void Frame::on_pushButton_clicked() { emit clicked(); //声明发送信号 close(); //执行发送信号后关闭窗口 }
main.cpp
#include "dialog.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Dialog w; w.show(); return a.exec(); }
Dialog.ui
Frame.ui
相关文章
文章评论 (0)