2

我使用 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)));

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

4

1 回答 1

0

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

然后要做一些事情:

  • Q_OBJECT在 scriptdialog.h 中有宏
  • 你记得在添加新Q_OBJECT类后运行 qmake
  • qDebug打印/断点添加到notifyStartScript发出的位置
  • 使用打印或断点将其他东西连接到startScripting插槽,以验证它是否被调用qDebug
  • 如果您使用了源内构建(例如在源目录中从命令行运行 qmake 和 make),然后在单独的构建目录中切换到“影子构建”,请确保源目录中没有生成的 .cpp、.h 和.o 文件。
于 2013-02-02T20:52:33.817 回答