【问题标题】:Connecting QDialog to QMainWindow将 QDialog 连接到 QMainWindow
【发布时间】:2012-01-24 00:52:04
【问题描述】:

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

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

【问题讨论】:

    标签: qt qdialog


    【解决方案1】:

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

    然后有一些事情要做:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      相关资源
      最近更新 更多