如何在Qt中通过按钮按下生成一个窗口(小部件)

4

我已经在Linux上通过Qt Creator设计了一个GUI。这个设计包括一些字段,文本编辑和一些按钮。

当我按下按钮时,我想显示另一个窗口。是否有GUI选项或任何硬编码可以实现这个功能?

2个回答

8

您需要信号和槽

您必须将点击的信号连接到您的主窗口小部件自己创建的自定义槽。

根据Patrice BernassolaJob的评论进行了更正的代码。

在类定义(.h文件)中添加以下行:

Q_OBJECT

private slots:
    void exampleButtonClicked();
private:
    QDialog *exampleDialog;

当您在类中定义信号或槽时,需要使用宏Q_OBJECT。

变量exampleDialog应该在定义文件中声明,以便在槽中访问它。

您必须对其进行初始化,通常在构造函数中完成。

ExampleClass::ExampleClass()
{
    //Setup you UI
    dialog = new QDialog;
}

在类的实现(.cpp文件)中添加代码,以完成您想要的操作,例如创建一个新窗口。
void ExampleClass::exampleButtonClicked()
{
    exampleDialog->show();
}

同时,您还需要使用以下代码将信号连接到槽:

connect(exampleButton, SIGNAL(clicked()), this, SLOT(exampleButtonClicked()));

你的问题有些基础,所以我建议先阅读一些基础教程,这样你可以更快地取得进步,避免等待答案。以下是对我有用的一些教程链接:

http://zetcode.com/tutorials/qt4tutorial/

http://doc.qt.io/archives/qt-4.7/tutorials-addressbook.html


1
在你的例子中,新对话框将被显示并立即销毁,因为 exampleDialog 将在函数结束时超出作用域。使你的对话框模态或使用成员变量来允许对话框在此函数之外存在。 - Patrice Bernassola
感谢您的纠正。我还忘记了 Q_OBJECT 宏。 已经修正了。 - Miguel López

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接