Qt4:将QMainWindow实例放置在其他QWidget/QMainWindow中
我想将QMainWindow实例放在另一个QWidget中(例如,另一个QMainWindow的centralWidget) 我想知道为什么它不起作用?QMainWindow直接从QWidget继承。将QWidget放在另一个QWidget中效果很好 我经常在qtabar中放置QMainWindow实例,没有任何问题 ps您可能会问我为什么需要使用QMainWindow?我想使用垂直布局在一个表单中放置两个小部件。我希望两个小部件都有单独的工具栏直接覆盖在它们上面 也许有其他方法可以使用QtCreator将工具栏放置在普通QWidgets中Qt4:将QMainWindow实例放置在其他QWidget/QMainWindow中,qt,qt4,qt-creator,qwidget,qmainwindow,Qt,Qt4,Qt Creator,Qwidget,Qmainwindow,我想将QMainWindow实例放在另一个QWidget中(例如,另一个QMainWindow的centralWidget) 我想知道为什么它不起作用?QMainWindow直接从QWidget继承。将QWidget放在另一个QWidget中效果很好 我经常在qtabar中放置QMainWindow实例,没有任何问题 ps您可能会问我为什么需要使用QMainWindow?我想使用垂直布局在一个表单中放置两个小部件。我希望两个小部件都有单独的工具栏直接覆盖在它们上面 也许有其他方法可以使用QtCr
编辑 第一个示例(效果很好) 我基于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实例可以毫无问题地放置在QTabWidgets中。
QMainWindow
以平台无关的方式提供预定义的东西,如工具栏、状态栏和菜单栏(它“做正确的事情”,无需手动干预)。如果您只需要在布局中使用一组按钮,请使用QWidget
您需要确保每个QMainWindow都有中央QWidget`,除此之外,您应该没事
centralwidget = new QMainWindow(this);
centralwidget->setWindowFlags(Qt::Widget);
setCentralWidget(centralwidget);
这应该会有帮助。有同样的问题,我找到了解决办法
QMainWindow将其窗口类型设置为Qt::window,这样即使它有父窗口,它也将位于独立窗口中(您可以通过在QMainWindow上调用show()来确认这一点,并且您将在它自己的窗口中看到它)。尝试添加行
window->setWindowFlags(Qt::Widget);
在您构建QMainWindow之后。我知道什么是QMainWindow。这篇文章根本没有回答我的问题。好吧,如果你的问题是“我想知道为什么它不起作用?
”,我试着回答得和问题本身一样精确。只有一件事可以阻止你做你想做的事情:没有中央部件。您可以在QTabar的每个选项卡内使用工具栏创建自己的布局。指定您的目标,并至少提供一些代码和/或错误消息。我看不懂你的心思。我提供了问题的进一步描述。我认为我的问题很简单。没有错误,非常简单。不管怎样,谢谢你的帮助:)你能详细说明到底发生了什么吗。当你说“它不起作用”时,实际发生了什么?它是给出了一个错误还是什么都没有显示?我提供了进一步的描述。没有错误,第二个示例中没有显示任何内容。指向解决方案的链接已断开