![](/img/trans.png)
[英]How to create a basic GUI(storing names and addresses in a list) using Qt?
[英]How to create right GUI widget by using Qt?
我正在使用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本身。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.