2012-01-24 31 views
2

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

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

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

回答

0

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

那么一些事情要做:

  • 你有scriptdialog.h的Q_OBJECT宏观
  • 你记得添加新Q_OBJECT
  • 后运行qmake的加入qDebug打印/断点到notifyStartScript是发射
  • 将其他连接到startScripting插槽,使用qDebug打印或断点来验证它被称为
  • 如果你已经使用了源代码内部构建(就像在源代码目录下运行qmake并从命令行创建),然后在单独的内部目录中切换到“阴影构建”,确保源代码目录清理生成的.cpp文件, .h和.o文件。