将QDialog连接到QMainWindow

时间:2012-01-24 00:52:05

标签: qt qdialog

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

我的下一步是添加一个无模式对话框。我不希望对话框阻止主窗口。我希望对话框保持活动状态(用户可见或在后台可见),直到用户单击关闭它。我用设计师创建了一个无模式的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)));

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

1 个答案:

答案 0 :(得分:0)

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

然后有些事要做:

  • 您在scriptdialog.h中有Q_OBJECT
  • 您记得在添加新的Q_OBJECT
  • 后运行qmake
  • qDebug打印/断点添加到notifyStartScript发出的位置
  • 将其他内容连接到startScripting广告位,并使用qDebug打印或断点,以验证其是否被调用
  • 如果您使用过源内构建(例如只在源代码管理器上运行qmake和make命令行),然后在单独的构建目录中切换到“影子构建”,请确保源代码清除生成的.cpp, .h和.o文件。