我正在使用 Qt 和 Qt Creator 编写一个简单的文本编辑器。我想知道如何制作正确的应用程序结构。我的意思是小部件。 QMainWindow 应该是主窗口部件还是它可以是 QWidget?当我尝试将 QMainWindiw 指定为 QTextEdit 的父窗口小部件时,QTextEdit 未显示。因此,我决定将 QMainWindow 初始化为 QWidget 的父级,而 QWidget 成为所有其他小部件的父级小部件。这是正确的方法吗?
#include <QApplication>
#include <QMainWindow>
#include <QWidget>
#include <QVBoxLayout>
#include <QTextEdit>
#include <QMenuBar>
#include <QMenu>
#include <QSizePolicy>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow *mainWindow = new QMainWindow;
QMenu *fileMenu = new QMenu("File");
fileMenu->addAction("New");
fileMenu->addAction("Open");
fileMenu->addAction("Save");
fileMenu->addAction("Save as");
fileMenu->addSeparator();
fileMenu->setMaximumWidth(160);
QMenu *editMenu = new QMenu("Edit");
editMenu->addAction("Copy");
editMenu->addAction("Past");
editMenu->addAction("Cut");
editMenu->setMinimumWidth(160);
QMenuBar *mainMenu = new QMenuBar;
mainMenu->addMenu(fileMenu);
mainMenu->addMenu(editMenu);
mainMenu->addAction("Exit");
mainMenu->show();
QWidget *mainWidget = new QWidget(mainWindow);
mainWidget->move(0, 20);
mainWidget->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
QTextEdit *textEdit = new QTextEdit;
textEdit->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
QVBoxLayout *vBoxLayout = new QVBoxLayout;
vBoxLayout->addWidget(textEdit);
mainWidget->setLayout(vBoxLayout);
mainWidget->show();
mainWindow->setMenuBar(mainMenu);
mainWindow->show();
return a.exec();
}
最佳答案
如果您需要使用它的功能之一,您应该使用 QMainWindow
:工具栏、停靠窗口小部件、主菜单或状态栏(有关更多信息,请参阅 QMainWindow
文档)。如果您不需要它们,您可以使用 QWidget
作为您的顶级小部件。
当使用 QMainWindow 时,您需要使用 QMainWindow::setCentralWidget
设置中央小部件并将窗口内容添加到这个小部件,而不是 QMainWindow 本身。
关于c++ - 如何使用 Qt 创建正确的 GUI 小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17134812/