gpt4 book ai didi

Qt4:将 QMainWindow 实例放置在其他 QWidget/QMainWindow 中

转载 作者:行者123 更新时间:2023-12-03 21:00:43 27 4
gpt4 key购买 nike

我想将 QMainWindow 实例放在另一个 QWidget 中(例如另一个 QMainWindow 的 centralWidget)。

我想知道为什么它不起作用? QMainWindow 直接继承自 QWidget。将 QWidget 放置在另一个 QWidget 中可以正常工作。

我经常将 QMainWindow 实例放在 QTabBar 中,没有任何问题。

ps 你可能会问为什么我需要使用 QMainWindow ?我想使用垂直布局在 1 个表单中放置 2 个小部件。我希望两个小部件都直接在它们上面有单独的工具栏。

也许还有其他方法可以使用 QtCreator 在普通 QWidgets 中放置工具栏?

编辑

第一个例子(工作正常)

我基于 QWidget 创建了新的类/表单。 (QtCreator 基于标准模板创建 3 个文件 *.cpp、*.h 和 *.ui)。

类声明看起来像这样

class NotesEditor : public QWidget
{
Q_OBJECT

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

private:
Ui::NotesEditor *ui;
};

当我尝试使用这个小部件并将其放置在另一个小部件中时,它工作正常。
我使用了 qtcreator 的“提升到...”功能 - 这里没有问题。

第二个例子(不起作用)

我基于 QMainWindow 创建了新的类/表单。 (QtCreator 基于标准模板创建 3 个文件 *.cpp、*.h 和 *.ui)。

类声明如下所示:
class Notes : public QMainWindow
{
Q_OBJECT

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

private:
Ui::Notes *ui;
};

现在,当我尝试将此小部件放在另一个小部件中时,它不可见。
和之前我使用 qtcreator 的“promote to ...”功能一样。

两个小部件(第一个基于 QWidget,第二个基于 QMainWindow)具有基于标准 qtcreator 代码模板的相同默认结构。我在这里没有做太多改变——只是在表单设计器中添加了一些按钮。

在第二个示例中,我尝试在类实例上使用 setEnabled(true) 和 setVisible(true)。第一个没有结果。第二个在单独的窗口中打开这个小部件。

我认为最大的问题是 QMainWindow 嵌套在另一个 QWidget 中的可能性。正如我之前写的 QMainWindow 实例可以毫无问题地放置在 QTabWidgets 中。

最佳答案

遇到同样的问题,我找到了解决方案 here .

QMainWindow 将其窗口类型设置为 Qt::Window,这样即使它有一个父窗口,它也会在一个独立的窗口中(您可以通过在 QMainWindow 上调用 show() 来确认这一点,并且您将在它自己的窗口中看到它)。尝试添加行

window->setWindowFlags(Qt::Widget);

在构建 QMainWindow 之后。

关于Qt4:将 QMainWindow 实例放置在其他 QWidget/QMainWindow 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6344886/

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