我想将 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 的“提升到...”功能。
两个小部件(第一个基于 QWidget,第二个基于 QMainWindow)具有基于标准 qtcreator 代码模板的相同默认结构。我在这里没有做太多改变——只是在表单设计器中添加了一些按钮。
在第二个示例中,我尝试在类实例上使用 setEnabled(true) 和 setVisible(true)。第一个没有结果。第二个在单独的窗口中打开这个小部件。
我认为最大的问题是什么 probibits QMainWindow 嵌套在另一个 QWidget 中。正如我之前写的那样,QMainWindow 实例可以毫无问题地放置在 QTabWidgets 中。