日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【QT】QT菜单栏、状态栏、工具栏

發布時間:2023/12/15 c/c++ 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【QT】QT菜单栏、状态栏、工具栏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

菜單欄、工具欄、狀態欄

主窗口框架(QMainWindow)擁有自己的布局,包括以下組件:

  • 菜單欄

菜單欄包含了一個下拉菜單項的列表,這些菜單項通過QAction動作類實現。一個主窗口只能有一個菜單欄。

  • 工具欄

工具欄一般用于常用的菜單項,也可以插入其他窗口部件,一個主窗口可以擁有多個工具欄。

  • 中心部件

主窗口中心區域可以放入一個窗口部件作為中心部件,是應用程序的主要功能實現區域,一個主窗口只能有一個中心部件。

  • dock部件

dock部件又稱為停靠部件,或停靠窗口,可停靠在窗口部件的四周,用來設置一些部件來實現一些功能,類似一個工具箱,一個主窗口可擁有多個dock部件。

  • 狀態欄

狀態欄用于顯示程序的一些狀態信息,在主窗口的最底下,一個主窗口只能擁有一個狀態欄。

菜單欄、工具欄、狀態欄

代碼添加示例。

//菜單QMenu* editMenu = ui->menuBar->addMenu("編輯(&E)");QAction *action_copy = editMenu->addAction(QIcon("test.png"),QString("復制(&C)"));action_copy->setShortcut(QKeySequence("Ctrl+C"));//添加到主窗口工具欄——工具欄添加動作按鈕ui->mainToolBar->addAction(action_copy);//動作按鈕組,互斥選項,只能選擇這其中的一個QActionGroup* group = new QActionGroup(this);QAction* action_L = group->addAction("左對齊(&L)");QAction* action_R = group->addAction("右對齊(&R)");QAction* action_C = group->addAction("居中對齊(&C)");QAction* action_J = group->addAction("兩端對齊(&J)");//設置可選action_L->setCheckable(true);action_R->setCheckable(true);action_C->setCheckable(true);action_J->setCheckable(true);//菜單欄中添加分隔線editMenu->addSeparator();//添加到窗口菜單editMenu->addAction(action_L);editMenu->addAction(action_R);editMenu->addAction(action_C);editMenu->addAction(action_J);// 工具欄添加部件QToolButton* toolBtn = new QToolButton(this);toolBtn->setText("顏色");QMenu* colorMenu = new QMenu(this);colorMenu->addAction("紅色");colorMenu->addAction("綠色");toolBtn->setMenu(colorMenu);//設置模式為彈出式菜單toolBtn->setPopupMode(QToolButton::MenuButtonPopup);ui->mainToolBar->addWidget(toolBtn);//添加調節大小窗口QSpinBox* spinBox = new QSpinBox(this);ui->mainToolBar->addWidget(spinBox);//顯示臨時信息ui->statusBar->showMessage(QString("歡迎......"),3000);//添加狀態欄永久顯示QLabel* tag = new QLabel("https://doraemon-hub-art.github.io");ui->statusBar->addPermanentWidget(tag);

自定義菜單欄

自定義菜單需要定義一個繼承QWidgetAction的類, 并重寫createWidget方法,在該方法中自定義部件設置。

示例MyAction.h

#ifndef MYACTION_H #define MYACTION_H #include<QWidgetAction> #include<QLineEdit>class MyAction : public QWidgetAction {Q_OBJECT public:MyAction(QObject* parent = 0); protected:QWidget* createWidget(QWidget* parent); signals:void getText(const QString& string); private slots:void sendText(); private:QLineEdit* lineEdit; };#endif // MYACTION_H

MyAction.cpp

#include "myaction.h" #include<QSplitter> #include<QLabel> MyAction::MyAction(QObject* parent):QWidgetAction(parent) {lineEdit = new QLineEdit;connect(lineEdit,&QLineEdit::returnPressed,this,&MyAction::sendText); }QWidget *MyAction::createWidget(QWidget *parent) {//是否繼承自菜單或者工具欄//是則創建父部件的子部件并返回子部件if(parent->inherits("QMenu")||parent->inherits("QToolBar")){QSplitter * splitter = new QSplitter(parent);QLabel* label = new QLabel("插入文本:");splitter->addWidget(label);splitter->addWidget(lineEdit);return splitter;} } void MyAction::sendText() {emit getText(lineEdit->text());lineEdit->clear(); }

總結

以上是生活随笔為你收集整理的【QT】QT菜单栏、状态栏、工具栏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。