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就是多個!啊哈!張全蛋!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM