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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Qt基础】2.Qt基础 窗口、资源、布局与控件

發布時間:2023/12/9 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Qt基础】2.Qt基础 窗口、资源、布局与控件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 QMainWindow

1.1 菜單欄【唯一】

1.1 菜單欄 最多有一個
1.1.1 QMenuBar * bar = MenuBar();
1.1.2 setMenuBar( bar )
1.1.3 QMenu * fileMenu = bar -> addMenu(“文件”) 創建菜單
1.1.4 QAction * newAction = fileMenu ->addAction(“新建”); 創建菜單項
1.1.5 添加分割線 fileMenu->addSeparator();

1.2 工具欄 【可以有多個】

1.2.1 QToolBar * toolbar = new QToolBar(this);
1.2.2 addToolBar( 默認??繀^域, toolbar ); Qt::LeftToolBarArea
1.2.3 設置 后期??繀^域,設置浮動,設置移動
1.2.4 添加菜單項 或者添加 小控件

1.3 狀態欄【唯一】

1.3 狀態欄 最多一個
1.3.1 QStatusBar * stBar = statusBar();
1.3.2 設置到窗口中 setStatusBar(stBar);
1.3.3 stBar->addWidget(label);放左側信息
1.3.4 stBar->addPermanentWidget(label2); 放右側信息

1.4 鉚接部件 浮動窗口 【可以多個】

1.4.1 QDockWidget
1.4.2 addDockWidget( 默認??繀^域,浮動窗口指針)
1.4.3 設置后期停靠區域

1.5 設置核心部件 【只能一個】

1.5.1 setCentralWidget(edit);

2 資源文件

2.1 將圖片文件 拷貝到項目位置下
2.2 右鍵項目->添加新文件 –> Qt - > Qt recourse File - >給資源文件起名
2.3 res 生成 res.qrc
2.4 open in editor 編輯資源
2.5 添加前綴 添加文件
2.6 使用 “ : + 前綴名 + 文件名 ”

3 對話框QDialog

對話框是 GUI 程序中不可或缺的組成部分。很多不能或者不適合放入主窗口的功能組件都必須放在對話框中設置。對話框通常會是一個頂層窗口,出現在程序最上層,用于實現短期任務或者簡潔的用戶交互。
Qt 中使用QDialog類實現對話框。就像主窗口一樣,我們通常會設計一個類繼承QDialog。QDialog(及其子類,以及所有Qt::Dialog類型的類)的對于其 parent 指針都有額外的解釋:如果 parent 為 NULL,則該對話框會作為一個頂層窗口,否則則作為其父組件的子對話框(此時,其默認出現的位置是 parent 的中心)。頂層窗口與非頂層窗口的區別在于,頂層窗口在任務欄會有自己的位置,而非頂層窗口則會共享其父組件的位置。

  • 模態對話框,就是會阻塞同一應用程序中其它窗口的輸入。

    模態對話框很常見,比如“打開文件”功能。你可以嘗試一下記事本的打開文件,當打開文件對話框出現時,我們是不能對除此對話框之外的窗口部分進行操作的。

  • 與此相反的是非模態對話框,例如查找對話框,我們可以在顯示著查找對話框的同時,繼續對記事本的內容進行編輯。

3.1 標準對話框

所謂標準對話框,是 Qt 內置的一系列對話框,用于簡化開發。事實上,有很多對話框都是通用的,比如打開文件、設置顏色、打印設置等。這些對話框在所有程序中幾乎相同,因此沒有必要在每一個程序中都自己實現這么一個對話框。常用的有錯誤、信息、提問、警告幾類。
Qt 的內置對話框大致分為以下幾類:

  • QColorDialog: 選擇顏色;

  • QFileDialog: 選擇文件或者目錄;

  • QFontDialog: 選擇字體;

  • QInputDialog: 允許用戶輸入一個值,并將其值返回;

  • QMessageBox: 模態對話框,用于顯示信息、詢問問題等;

  • QPageSetupDialog: 為打印機提供紙張相關的選項;

  • QPrintDialog: 打印機配置;

  • QPrintPreviewDialog:打印預覽;

  • QProgressDialog: 顯示操作過程。
    舉例



3.2 消息對話框

QMessageBox用于顯示消息提示。

4 布局管理

Qt 提供了兩種組件定位機制:絕對定位和布局定位。

  • 絕對定位就是一種最原始的定位方法:給出這個組件的坐標和長寬值。 這樣,Qt
    就知道該把組件放在哪里以及如何設置組件的大小。但是這樣做帶來的一個問題是,如果用戶改變了窗口大小,比如點擊最大化按鈕或者使用鼠標拖動窗口邊緣,采用絕對定位的組件是不會有任何響應的。這也很自然,因為你并沒有告訴Qt,在窗口變化時,組件是否要更新自己以及如何更新?;蛘?#xff0c;還有更簡單的方法:禁止用戶改變窗口大小。但這總不是長遠之計。
  • 布局定位:你只要把組件放入某一種布局,布局由專門的布局管理器進行管理。當需要調整大小或者位置的時候,Qt 使用對應的布局管理器進行調整。
    布局定位完美的解決了使用絕對定位的缺陷。

Qt 提供的布局中以下三種是我們最常用的:

  • QHBoxLayout:按照水平方向從左到右布局;
  • QVBoxLayout:按照豎直方向從上到下布局
  • QGridLayout:在一個網格中進行布局,類似于 HTML 的 table;

4.1 系統提供的布局控件

4.2 利用widget布局


在widget中的控件可以進行水平、垂直、柵格布局等操作,比較靈活。
再布局的同時我們需要靈活運用彈簧的特性

可以讓我們的布局更加的美觀,下面是一個登陸窗口,利用widget可以搭建出如下登陸界面:

5 控件

5.1 QLabel控件使用

QLabel是我們最常用的控件之一,其功能很強大,我們可以用來顯示文本,圖片和動畫等。
QPushButton 常用按鈕
QToolButton 工具按鈕 用于顯示圖片,如圖想顯示文字,修改風格:toolButtonStyle , 凸起風格autoRaise
radioButton 單選按鈕,設置默認 ui->rBtnMan->setChecked(true);
checkbox多選按鈕,監聽狀態,2 選中 1 半選 0 未選中
其使用案例如下:

5.2 QListWidget 列表容器

QListWidgetItem * item 一行內容
ui->listWidget ->addItem ( item )
設置居中方式item->setTextAlignment(Qt::AlignHCenter);
可以利用addItems一次性添加整個詩內容

//利用listWidget寫詩 // QListWidgetItem * item = new QListWidgetItem("愛他明月好"); // //將一行詩放入到listWidget中 // ui->listWidget->addItem(item); // QListWidgetItem * item2 = new QListWidgetItem("憔悴也相關"); // //將一行詩放入到listWidget中 // ui->listWidget->addItem(item2); // item->setTextAlignment(Qt::AlignHCenter)//QStringList QList<QString>QStringList list;list << "愛他明月好"<<"憔悴也相關";ui->listWidget->addItems(list);

5.3 QTreeWidget 樹控件

設置頭
ui->treeWidget->setHeaderLabels(QStringList()<< “英雄”<< “英雄介紹”);
創建根節點
QTreeWidgetItem * liItem = new QTreeWidgetItem(QStringList()<< “力量”);
添加根節點 到 樹控件上
ui->treeWidget->addTopLevelItem(liItem);
添加子節點
liItem->addChild(l1);

5.4 dota英雄樹案例

//treeWidget使用//設置水平頭ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介紹");//QTreeWigetItemQTreeWidgetItem * liitem = new QTreeWidgetItem(QStringList()<<"力量");QTreeWidgetItem * minitem = new QTreeWidgetItem(QStringList()<<"敏捷");QTreeWidgetItem * zhiitem = new QTreeWidgetItem(QStringList()<<"智力");//加載頂層結點ui->treeWidget->addTopLevelItem(liitem);ui->treeWidget->addTopLevelItem(minitem);ui->treeWidget->addTopLevelItem(zhiitem);//追加子節點QStringList heroL1;heroL1 << "剛被豬" << "前排坦克,能在吸收傷害的同時造成可觀的范圍輸出";QTreeWidgetItem *li1 = new QTreeWidgetItem(QStringList(heroL1));liitem->addChild(li1);QStringList heroL2;heroL2 << "船長" << "前排坦克,能肉能輸出能控場的全能英雄";QTreeWidgetItem *li2 = new QTreeWidgetItem(QStringList(heroL2));liitem->addChild(li2);QStringList heroM1;heroM1 << "月騎" << "中排物理輸出,可以使用分裂利刃攻擊多個目標";QTreeWidgetItem *min1 = new QTreeWidgetItem(QStringList(heroM1));minitem->addChild(min1);QStringList heroM2;heroM2 << "小魚人" << "前排戰士,擅長偷取敵人的屬性來增強自身戰力";QTreeWidgetItem *min2 = new QTreeWidgetItem(QStringList(heroM2));minitem->addChild(min2);QStringList heroZ1;heroZ1 << "死靈法師" << "前排法師坦克,魔法抗性較高,擁有治療技能";QTreeWidgetItem *zhi1 = new QTreeWidgetItem(QStringList(heroZ1));zhiitem->addChild(zhi1);QStringList heroZ2;heroZ2 << "巫醫" << "后排輔助法師,可以使用奇特的巫術詛咒敵人與治療隊友";QTreeWidgetItem *zhi2 = new QTreeWidgetItem(QStringList(heroZ2));zhiitem->addChild(zhi2);

總結

以上是生活随笔為你收集整理的【Qt基础】2.Qt基础 窗口、资源、布局与控件的全部內容,希望文章能夠幫你解決所遇到的問題。

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