将QDialog连接到QMainWindow

我使用QT Designer创建了一个QMainWindow。 我有具有信号插槽的组件。 我制作了一些非gui组件QObject,所以我也可以使用信号/插槽机制。

我的下一步是添加一个无模式对话框。 我不想让对话框阻止主窗口。 我希望对话框保持活动状态(用户可以看到或在后台显示),直到用户单击关闭它。 我用设计器创建了一个无模式的QDialog对象。 该对话框根据需要弹出。 它还将文本框中的前一个会话的信息保存在文本框中。 这只是一个文件名。

但是,当我开始将QDialog连接到QMainWindow时,信号/插槽机制似乎不起作用。

这是我的代码:

//In the .h file declared as member of the QMainWindow
ScriptDialog *theScriptDialog;

//In the .cpp file, the constructor of QMainWindow
theScriptDialog = new ScriptDialog(this);

QObject::connect(theScriptDialog, SIGNAL(notifyStartScript(QString)), SLOT   (startScripting(QString)));

也许我在吠叫错误的树。 有没有更好的方法来创建这样的弹出式窗口?


首先查看连接是否成功:检查应用程序控制台输出是否有连接失败的警告,然后打印连接调用的返回值。

然后做一些事情:

  • 你在Q_OBJECT中有Q_OBJECT
  • 你记得在添加新的Q_OBJECT类后运行qmake
  • qDebug print / breakpoint添加到notifyStartScript发出的位置
  • 连接别的东西来startScripting插槽,用qDebug打印或断点来验证它被调用
  • 如果你已经使用了源代码内部构建(比如只运行qmake并从源代码目录下的命令行创建),然后在单独的构建目录中切换到“阴影构建”,确保源代码目录清洁生成的.cpp,.h和.o文件。
  • 链接地址: http://www.djcxy.com/p/39273.html

    上一篇: Connecting QDialog to QMainWindow

    下一篇: Qt: Update widgets that are hidden before they are then shown?