簡體   English   中英

如何使用Qt創建正確的GUI小部件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM