gpt4 book ai didi

c++ - Qt 设计器 : Edit other window than mainwindow

转载 作者:行者123 更新时间:2023-11-28 07:09:07 25 4
gpt4 key购买 nike

我有一个通过 Qt 为用户提供 GUI 的项目。我用 Qt Designer(集成在 Qt Creator 中)设计它,现在我想添加另一个窗口,以便让用户更改设置。
Afaik 我必须使用 QWidget 创建另一个窗口,现在我想知道如何在 Qt Designer 中编辑这个 QWidget 因为我只能设计主窗口。< br/>我的代码如下所示:

主窗口.hpp

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();

private slots:

// various slot calls

// action triggered when clicking an entry in the QMenu of mainwindow
void on_action_dummy();

private:
Ui::MainWindow *ui;
QWidget dummy;
};

主窗口.cpp

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}

MainWindow::~MainWindow()
{
delete ui;
}

// various implementations of the slot calls in mainwindow.hpp

void MainWindow::on_action_dummy()
{
dummy.show();
}

也许我的新窗口需要一个自己的类? QWindow 是否适合这项任务?

最佳答案

您需要添加一个新的 UI 文件以及 header /类。在 Qt Creator 的“新文件”对话框中有一个选项(侧栏上“Qt”子类别下的 Qt Designer Form Class)。然后打开它并在程序的入口点 (int main()) 实例化类,如 MainWindow。像这样的东西:

MySettingsDialog *dialog = new MySettingsDialog(this); 
dialog->show();

您需要小心如何实例化它——主要是确保对象在离开当前作用域时仍然存在(例如,如果您在类中的方法中调用它,则使用指针)。此外,您显示/执行对话框的方式可能会有所不同。当您想要一个阻塞(模态)对话框而不是一个新的“窗口”时,通常就是这种情况。

编辑:要处理内存管理,您可以设置 WA_DeleteOnClose 属性:

dialog->setAttribute(Qt::WA_DeleteOnClose);

关于c++ - Qt 设计器 : Edit other window than mainwindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21295161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com