Qt工作笔记-主界面往模式对话框emit信号,有注意的问题
生活随笔
收集整理的這篇文章主要介紹了
Qt工作笔记-主界面往模式对话框emit信号,有注意的问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
今天遇到個坑,往主界面往模式對話框emit信號。
應為模式對話框exec后,主界面就不響應了,emit也發(fā)不了。所以要先emit,再exec。
運行截圖如下:
正常情況下:
此時,相關(guān)代碼如下:
void Widget::openBtnClicked(){m_dialog=new Dialog();connect(this,SIGNAL(btnClicked(QString)),m_dialog,SLOT(receive(QString)));emit btnClicked(ui->lineEdit->text());m_dialog->exec(); }不正常情況下:
代碼如下:
void Widget::openBtnClicked(){m_dialog=new Dialog();connect(this,SIGNAL(btnClicked(QString)),m_dialog,SLOT(receive(QString)));m_dialog->exec();emit btnClicked(ui->lineEdit->text()); }--------------------------------------------------------------------------------------
下面給出正常情況下的代碼:
dialog.h
#ifndef DIALOG_H #define DIALOG_H#include <QDialog>namespace Ui { class Dialog; }class Dialog : public QDialog {Q_OBJECTpublic:explicit Dialog(QWidget *parent = 0);~Dialog(); public slots:void receive(QString msg);private:Ui::Dialog *ui; };#endif // DIALOG_Hwidget.h
#ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include "dialog.h"namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();public slots:void openBtnClicked();signals:void btnClicked(QString msg);private:Ui::Widget *ui;Dialog *m_dialog;};#endif // WIDGET_Hdialog.cpp
#include "dialog.h" #include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog) {ui->setupUi(this); }void Dialog::receive(QString msg){ui->lineEdit->setText(msg); }Dialog::~Dialog() {delete ui; }widget.cpp
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(openBtnClicked())); }void Widget::openBtnClicked(){m_dialog=new Dialog();connect(this,SIGNAL(btnClicked(QString)),m_dialog,SLOT(receive(QString)));emit btnClicked(ui->lineEdit->text());m_dialog->exec(); }Widget::~Widget() {delete ui; }main.cpp
#include "widget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }總結(jié)
以上是生活随笔為你收集整理的Qt工作笔记-主界面往模式对话框emit信号,有注意的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt学习笔记-使用QStyleFacto
- 下一篇: Qt工作笔记-双击TreeWidget列