【发布时间】:2013-03-19 15:01:26
【问题描述】:
我的 Qt GUI 应用程序中有一个实用程序类。但是,在我的便利课中,我想调用QMessageBox::critical()、warning() 等。该类不是QWidget,因此我不能将this 作为父级传递。但是,我的类是 QObject 的子类,因此它可以运行诸如信号和插槽之类的东西。因此,要解决这个问题——如果可能的话——我是否应该查看属性 API 而不是使用静态 API?
类声明:
class NetworkManager : public QObject
下面是一个失败的静态 API 调用示例:
QMessageBox::critical(this, tr("Network"), tr("Unable to connect to host.\n"),
QMessageBox::Ok | QMessageBox::Discard);
那么,如果我要构建一个基于属性的 API 消息框,是否可以以某种方式在 QObject 中调用它?我并没有真正使用过基于属性的 API,但我从文档中了解到它似乎使用了事件循环(即exec())。
【问题讨论】:
-
我以为你可以通过
nullptr?对于静态便捷方法,对话框无论如何都固定为应用程序模式。 -
这实际上是一个有趣的想法。这样做比使用我不熟悉的 API 重做 10 多个消息框要容易得多:P
标签: c++ qt user-interface