我想将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;
};
Run Code Online (Sandbox Code Playgroud)
当我尝试使用这个小部件并将其放在另一个小部件中时,它工作正常.我使用qtcreator的"提升到..."功能 - 这里没有问题.
第二个例子(不起作用)
我基于QMainWindow创建了新的类/表单.(QtCreator根据标准模板创建3个文件*.cpp,*.h和*.ui).
类声明如下所示:
class Notes : public QMainWindow
{
Q_OBJECT
public:
explicit Notes(QWidget *parent = 0);
~Notes();
private:
Ui::Notes *ui;
};
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试将此小部件放在另一个小部件中时,它不可见.和之前一样,我使用了qtcreator的"promote to ..."功能.
两个小部件(首先基于QWidget,第二个基于QMainWindow)具有基于标准qtcreator代码模板的相同默认结构.我在这里没有太大变化 - 只是在表单设计器中添加了一些按钮.
在第二个例子中,我尝试在类实例上使用setEnabled(true)和setVisible(true).第一个没有结果.第二个在单独的窗口中打开此小部件.
我认为最大的问题是QMainWindow是否会嵌套在另一个QWidget中.正如我在QMainWindow之前写的那样,实例可以放在QTabWidgets中而不会有任何问题.