我想在另一个QWidget中放置一个QMainWindow实例(例如另一个QMainWindow的centralWidget)。
我想知道为什么它不起作用? QMainWindow直接继承自QWidget。 在另一个QWidget中放置QWidget很好用。
我经常将QMainWindow实例放置在QTabBar中,没有任何问题。
附:你可能会问我为什么需要使用QMainWindow?我想在一个表单中放置2个小部件,使用垂直布局。我希望两个小部件都有单独的工具栏直接在它们上面。
也许有其他方法可以在QtCreator中将工具栏放置在普通的QWidget中吗?
编辑
第一个示例(正常工作)
我基于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)。第一个没有结果。第二个在单独的窗口中打开此小部件。
我认为最大的问题是什么阻止了QMainWindow嵌套在另一个QWidget中。正如我之前所写的,QMainWindow实例可以放置在QTabWidget中而没有任何问题。