1. 程式人生 > 實用技巧 >Qt筆記之 介面控制元件

Qt筆記之 介面控制元件

介面控制元件

目錄

QMainWindow

視窗結構

選單欄和工具欄

#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(600,400);

    // 選單欄 只有一個
    QMenuBar *bar = menuBar();
    this->setMenuBar(bar);

    // 新增選單
    QMenu *fileMenu = bar->addMenu("檔案");
    QMenu *editMenu = bar->addMenu("編輯");

    // 新增選單項
    QAction *newAction = fileMenu->addAction("新建");
    // 新增分割線
    fileMenu->addSeparator();
    QAction *openAction = fileMenu->addAction("開啟");

    // 工具欄 可以有多個
    QToolBar *toolBar = new QToolBar(this);
    addToolBar(Qt::RightToolBarArea,toolBar);

    // 只允許左右停靠
    toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);

    // 設定浮動
    toolBar->setFloatable(false);

    // 設定移動(總開關)
    toolBar->setMovable(false);

    // 工具欄中設定選單項
    toolBar->addAction(newAction);
    toolBar->addSeparator();
    toolBar->addAction(openAction);
}

MainWindow::~MainWindow()
{
    delete toolBar;
}

效果:

狀態列-浮動視窗和中心部件

#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QLabel>
#include <QStatusBar>
#include <QDockWidget>
#include <QTextEdit>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(600,400);

    // 選單欄 只有一個
    QMenuBar *bar = menuBar();
    this->setMenuBar(bar);

    // 新增選單
    QMenu *fileMenu = bar->addMenu("檔案");
    QMenu *editMenu = bar->addMenu("編輯");

    // 新增選單項
    QAction *newAction = fileMenu->addAction("新建");
    // 新增分割線
    fileMenu->addSeparator();
    QAction *openAction = fileMenu->addAction("開啟");

    // 工具欄 可以有多個
    QToolBar *toolBar = new QToolBar(this);
    addToolBar(Qt::LeftToolBarArea,toolBar);

    // 只允許左右停靠
    toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);

    // 設定浮動
    toolBar->setFloatable(false);

    // 設定移動(總開關)
    toolBar->setMovable(false);

    // 工具欄中設定選單項
    toolBar->addAction(newAction);
    toolBar->addSeparator();
    toolBar->addAction(openAction);

    // 狀態列 只有一個
    QStatusBar *stBar = statusBar();
    setStatusBar(stBar);

    QLabel *labell = new QLabel("左側資訊");
    stBar->addWidget(labell);

    QLabel *labell2 = new QLabel("右側資訊");
    stBar->addPermanentWidget(labell2); // 從右往左新增

    // 鉚接部件 浮動視窗 可以有多個
    QDockWidget *dockWidget = new QDockWidget("浮動視窗",this);
    addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
    // 只允許上下停靠
    dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

    // 核心部件 中心部件
    QTextEdit *textEdit = new QTextEdit(this);
    setCentralWidget(textEdit);
}

MainWindow::~MainWindow()
{
    delete toolBar;
    delete labell;
    delete labell2;
    delete dockWidget;
    delete textEdit;
}

資原始檔的新增

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this); // 放入到程式的最上側

    // 在新建選單上新增圖片
    // ui->actionNew->setIcon(QIcon("D:\\資源\\圖片\\1.png"));

    // 新增檔案:res.qrc
    // 使用:: + 字首名 + 檔名
    ui->actionNew->setIcon(QIcon(":/1.png"));
}

MainWindow::~MainWindow()
{
    delete ui;
}

新增res檔案:

新增資源: