1. 程式人生 > 其它 >QT的基礎設定(選單欄、狀態列、工作列。。。。)

QT的基礎設定(選單欄、狀態列、工作列。。。。)

Qt [1] 是一個1991年由Qt Company開發的跨平臺C++圖形使用者介面應用程式開發框架。它既可以開發GUI程式,也可用於開發非GUI程式,比如控制檯工具和伺服器。下面介紹QT的基礎配置

1、選單欄

特性如下:

  • 有且僅有一個
  • 位置:頂部
// 建立選單 最多隻能有一個
QMenuBar * bar = menuBar();
// 將選單欄放入到視窗處
setMenuBar(bar);

// 建立頂部選單
QMenu * fileMenu = bar->addMenu("檔案");
QMenu * editMenu = bar->addMenu("編輯");

// 建立選單項
newAction =  fileMenu->addAction("新建");
// 建立多級選單
fileMenu->addMenu("開啟");
// 新增單級選單
editMenu->addAction("文字");
editMenu->addAction("圖片");
//新增分割線
fileMenu->addSeparator();
fileMenu->addAction("儲存");

2、工具欄

工具欄特性:

  • 可以有多個
  • 可浮動
  • 可以在任意位置
// 設定工具欄
QToolBar * toolBar = new QToolBar(this);
addToolBar(Qt::LeftToolBarArea, toolBar);
// 設定作用的區域
toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
// 設定不可浮動
toolBar->setFloatable(false);
// 總開關 設定不可移動
toolBar->setMovable(false);

toolBar->addAction(newAction); //QAction * newAction =  fileMenu->addAction("新建");可以把選單裡面的action方法整合到工具欄中
toolBar->addAction("啊哈");

QPushButton * btn = new QPushButton("來啦", this);
toolBar->addWidget(btn);// 也可以整合按鈕。

3、狀態列

狀態列就是程式最下面的那一欄,顯示當前程式狀態

  • 有且僅有一個
  • 位置:最下面
  • 可以在底部的左邊也可以在底部的右邊
// 放標籤控制元件
QLabel * label = new QLabel("提示資訊", this);
stBar->addWidget(label);

// 底部右側狀態列
QLabel *rightLabel = new QLabel("右側資訊", this);
stBar->addPermanentWidget(rightLabel);

4、鉚接部件-->浮動視窗

鉚接部件可以認為是輔助部件

  • 可以是多個
  • 可以再任意位置
// 鉚接部件  浮動視窗 
QDockWidget * dockWidget = new QDockWidget("浮動標籤", this);
// 初始化鉚接部件,需要傳入位置和QDockWidget物件
addDockWidget(Qt::BottomDockWidgetArea, dockWidget);
// 設定鉚接部件只能上下附著
dockWidget->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);

5、中心部件(內容部件)

中心部件是主要內容展示中心。有且僅有一個

  • 有且僅有一個
  • 內容展示的主要空間
// 設定中心部件  在這裡我們來顯示文字控制元件
QTextEdit * textEdit = new QTextEdit("毛毛來了", this);
setCentralWidget(textEdit);

6、實戰一哈

要求:點選工具欄的按鈕實現更改中心控制元件的內容!

在mainwindow.cpp中程式碼如下使用lambda無申明函式和connet實現訊號和槽的函式實現

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QMenuBar"
#include "QToolBar"
#include "QPushButton"
#include "QStatusBar"
#include "QLabel"
#include "QDockWidget"
#include "QTextEdit"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 重置視窗大小
    resize(600,400);

    // 建立選單 最多隻能有一個
    QMenuBar * bar = menuBar();
    // 將選單欄放入到視窗處
    setMenuBar(bar);

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

    // 建立選單項
    QAction * newAction =  fileMenu->addAction("新建");
    fileMenu->addMenu("開啟");
    editMenu->addAction("文字");
    editMenu->addAction("圖片");
    //新增分割線
    fileMenu->addSeparator();
    fileMenu->addMenu("儲存");

    // 設定工具欄
    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->addAction("啊哈");

    QPushButton * btn = new QPushButton("來啦", this);
    toolBar->addWidget(btn);

    // 設定狀態列 只能有一個
    QStatusBar * stBar = new QStatusBar;
    setStatusBar(stBar);
    // 放標籤控制元件
    QLabel * label = new QLabel("提示資訊", this);
    stBar->addWidget(label);

    QLabel *rightLabel = new QLabel("右側資訊", this);
    stBar->addPermanentWidget(rightLabel);

    // 鉚接部件  浮動視窗  可以使多個
    QDockWidget * dockWidget = new QDockWidget("浮動標籤", this);
    addDockWidget(Qt::BottomDockWidgetArea, dockWidget);
    dockWidget->addAction(newAction);
    // 設定鉚接部件只能上下附著
    dockWidget->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);


    // 設定中心部件  只能有一個
    QTextEdit * textEdit = new QTextEdit("毛毛來了", this);
    setCentralWidget(textEdit);

    // 實戰一哈
    connect(btn, &QPushButton::clicked,this,[=](){
        printText(*textEdit);
    });
}

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

void MainWindow::printText(QTextEdit & text)
{
    text.setText("你要幹啥???");
}

效果如下:

問:有的是一個有的控制元件可以有多個,咋判斷???
答:set就是一個,add就是多個!啊哈!張全蛋!