如何在 QWidget 中使用 QmainWindow?

use*_*054 4 qt qt4

我遇到了一个问题,我使用 QmainWindow 创建了一个应用程序,它有工具栏和状态栏。现在我必须将此应用程序添加到另一个从另一个 QMainWindow 派生的应用程序。现在我想在这个 Main Window 中有我的主 Window 。如何做到这一点 我们可以在另一个 QmainWindow 或 QWidget 中使用 QMainWindow 吗?请帮帮我。

vah*_*cho 6

我会写这样的东西:

另一个 QMainWindow 内的 QMainWindow

QMainWindow *mainWindow = new QMainWindow;
QMainWindow *subWindow = new QMainWindow(mainWindow);
// .. some configuration
mainWindow->setCentralWidget(subWindow);
Run Code Online (Sandbox Code Playgroud)

QWidget 内的 QMainWindow

QWidget *mainWindow = new QWidget;
QMainWindow *subWindow = new QMainWindow(mainWindow);
// .. some configuration
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(subWindow);
mainWindow->setLayout(layout);
Run Code Online (Sandbox Code Playgroud)

  • 对于任何对此感兴趣的人,您可能还希望拥有 `subWindow->setWindowFlags(Qt::Widget);`,默认情况下,`QMainWindow` 的窗口标志为 `Qt::Window`,这可能会导致一些小问题。 (2认同)

aaa*_*aaa -2

你可以使用这个:

void QApplication::setActiveWindow(QWidget * active)
Run Code Online (Sandbox Code Playgroud)

将小部件(您的主窗口)设置为主窗口。