1、混合方式UI設計

1、混合方式UI設計

  • 新建項目
    • 添加靜態資源
    • 添加資源
    • 添加action
    • 添加菜單
      • 菜單欄
      • 工具欄
      • 中間編輯區域
    • 代碼添加其他組件
      • 字體和大小
      • 狀態欄
    • 添加槽函數
      • UI設置的
      • 轉到槽的
      • 手寫的
      • 設置應用程序圖標
  • 代碼

新建項目

  1. MainWindow代碼文件夾
  2. 主窗口為 (QMainWindow)

添加靜態資源

  1. AppIcon.ico
  2. images下的所有圖標

添加資源

項目名稱->右鍵->add new->qt->qt resource file->名稱隨便寫
生成一個xx.qrc文件

  • 前綴為 /
  • 等修改時,直接右鍵qrc文件->添加現有文件
  • images和Application.ico同目錄

添加action

  • xx.ui文件
  • 下方有一個action editor工具欄
  • 位置:控件 - 試圖 - action editor
  • 新建action*(第一個按鈕)
1. 文本(顯示的名字):新建
2. 對象名稱:actNew
3. tooltip(光標在的提示):新建
4. checkabled:選中狀態,比如選中為粗體,不選中則不是粗體
5. shortcut:快捷鍵  ctl+n

以此類推

添加菜單

右邊mainwindow中有兩個對象:menubar和statusbar 菜單欄和狀態欄
菜單欄只有一個
工具欄toolbar可以有多個

1. windowTitle:混合方式設計主窗口

菜單欄

文件:新建、打開、分隔符、退出
編輯:剪切、賦值、粘貼、清空
格式:斜體、粗體、下劃線
查看:工具欄、狀態欄
幫助:關于

在xx.ui中,左上角有一個在這里輸入
這里會在menubar下添加子對象

輸入漢字:文件 
后回車
依次輸入  文件、編輯、格式、查看、幫助

將預創建的action,選中拖到指定的菜單欄中,上面出現紅線,鼠標出現加號即可
會在menubar下的子對象生成子對象

工具欄

窗口右鍵 - 添加工具欄

還是將action拖拽過去,出現紅色豎線

中間編輯區域

QTextEditor

代碼添加其他組件

字體和大小

QLabel
QSpinBox
QFontLambox

頭文件

#include <QLabel>
#include <QSpinBox>
#include <QFontComboBox>private:void initUI();//聲明初始化UI的函數QLabel* labelCurFile;//狀態欄的當前文件QSpinBox* spinFontSize;//工具欄 選擇字體大小QFontComboBox* fCmbFont;//工具欄 字體選擇下拉菜單

狀態欄

添加槽函數

UI設置的

最下方有一個signals_slots editor工具欄,可以圖形化設置

轉到槽的

在下方action editer 選中一個action,右鍵轉到槽
粗體、斜體、下劃線 選擇代bool參數的triggered(bool)

textEditor 右鍵轉到槽,選中內容變化

手寫的

設置應用程序圖標

打開pro文件 尾部追加

RC_ICONS = AppIcon.ico

或者
ui中windowsIcon選擇文件

代碼

.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QLabel>
#include <QSpinBox>
#include <QFontComboBox>
#include <QMessageBox>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();
private:void initUI();
private slots:// 自定義槽函數void onSpinFontsizeValueChanged(int fontSize);void onFCmbFontCurrentIndexChanged(const QString& font);void on_actFontBold_triggered(bool checked);void on_actFontItalic_triggered(bool checked);void on_actFontUnderline_triggered(bool checked);void on_textEdit_selectionChanged();void on_textEdit_copyAvailable(bool b);void on_actToolbar_triggered(bool checked);void on_actStatusBar_triggered(bool checked);void on_actAbout_triggered();private:Ui::MainWindow *ui;QLabel* labelCurFile;//狀態欄的當前文件QSpinBox* spinFontsize;//工具欄 選擇字體大小QFontComboBox* fCmbFont;//工具欄 字體選擇下拉菜單
};
#endif // MAINWINDOW_H

.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);this->setCentralWidget(ui->textEdit);//設置為主窗口的中心框架initUI();// 信號和槽函數的連接connect(spinFontsize,SIGNAL(valueChanged(int)), this, SLOT(onSpinFontsizeValueChanged(int)));//字體大小值變化connect(fCmbFont,SIGNAL(currentIndexChanged(QString)), this, SLOT(onFCmbFontCurrentIndexChanged(QString)));//字體當前編號變化
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::initUI(){ui->actCut->setEnabled(false);ui->actCopy->setEnabled(false);ui->actPaste->setEnabled(false);// 狀態欄上的labellabelCurFile = new QLabel("當前文件:");labelCurFile->setMinimumWidth(350);ui->statusbar->addWidget(labelCurFile); // 添加到狀態欄// 工具欄// 選擇字體大小的選值框spinFontsize = new QSpinBox;spinFontsize->setRange(8,50); // 設置字號的取值范圍spinFontsize->setValue(ui->textEdit->font().pointSize());spinFontsize->setMinimumWidth(50);spinFontsize->setMaximumWidth(80);// 選擇字體的下拉列表fCmbFont = new QFontComboBox;fCmbFont->setMinimumWidth(150);// 將控件添加到工具欄ui->toolBar->addWidget(new QLabel("  字體大小:"));ui->toolBar->addWidget(spinFontsize);ui->toolBar->addWidget(new QLabel("  字體:"));ui->toolBar->addWidget(fCmbFont);ui->actToolbar->setChecked(true);ui->actStatusBar->setChecked(true);
}
// "粗體"
void MainWindow::on_actFontBold_triggered(bool checked)
{QTextCharFormat fmt;if(checked)fmt.setFontWeight(QFont::Bold);elsefmt.setFontWeight(QFont::Normal);ui->textEdit->mergeCurrentCharFormat(fmt);
}
// "斜體"
void MainWindow::on_actFontItalic_triggered(bool checked)
{QTextCharFormat fmt;fmt.setFontItalic(checked);ui->textEdit->mergeCurrentCharFormat(fmt);
}
// "下劃線"
void MainWindow::on_actFontUnderline_triggered(bool checked)
{QTextCharFormat fmt;fmt.setFontUnderline(checked);ui->textEdit->mergeCurrentCharFormat(fmt);
}
// 更新 粗體、斜體、下滑線 三個按鈕的 checked屬性
void MainWindow::on_textEdit_selectionChanged()
{QTextCharFormat fmt;fmt = ui->textEdit->currentCharFormat();ui->actFontBold->setChecked(fmt.font().bold());   // "粗體"是否選中ui->actFontItalic->setChecked(fmt.fontItalic());  // "斜體"是否選中ui->actFontUnderline->setChecked(fmt.fontUnderline()); // "下劃線"是否選中spinFontsize->setValue(ui->textEdit->currentFont().pointSize()); // 字號fCmbFont->setCurrentText(fmt.fontFamily()); // 字體
}
// 更新 cut、copy、paste的 enabled屬性  釋放可復制
void MainWindow::on_textEdit_copyAvailable(bool b)
{ui->actCut->setEnabled(b);ui->actCopy->setEnabled(b);ui->actPaste->setEnabled(ui->textEdit->canPaste());
}void MainWindow::on_actToolbar_triggered(bool checked)
{ui->toolBar->setHidden(!checked);
}void MainWindow::on_actStatusBar_triggered(bool checked)
{ui->statusbar->setHidden(!checked);
}void MainWindow::on_actAbout_triggered()
{QMessageBox::about(this,"關于","版本:1.0\n版權所有:問問嘖嘖嘖");
}
// 改變字體大小
void MainWindow::onSpinFontsizeValueChanged(int fontSize)
{QTextCharFormat fmt;fmt.setFontPointSize(fontSize);  // 設置字體大小ui->textEdit->mergeCurrentCharFormat(fmt);
}
// 選擇字體
void MainWindow::onFCmbFontCurrentIndexChanged(const QString& fontFamily)
{QTextCharFormat fmt;fmt = ui->textEdit->currentCharFormat();fmt.setFontFamily(fontFamily);ui->textEdit->mergeCurrentCharFormat(fmt);//    QFont font;
//    font.setPointSizeF(pointSize);
//    font.setWeight(weight);
//    font.setItalic(isItalic);
//    font.setUnderline(fmt.fontUnderline());
//    ui->textEdit->setCurrentFont(font);//    fmt = ui->textEdit->currentCharFormat();
//    double pointSize = fmt.fontPointSize();//字號
//    int weight = fmt.fontWeight();//是否加粗
//    bool isItalic = fmt.fontItalic();//是否斜體
//    QFont font(fontFamily,int(pointSize),weight,isItalic);
//    font.setUnderline(fmt.fontUnderline());
//    ui->textEdit->setCurrentFont(font);}

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215980.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215980.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215980.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

scikit-learn-feature_selection

參考&#xff1a; Feature selection 1. 移除低方差的特征 方差低&#xff0c;說明變化不大。 將特征方差值小于一定值的特征移除 單變量特征分析 通過單特征分析&#xff0c;選擇最好的&#xff08;前k個&#xff09;的特征&#xff0c;scikit-learn 提供的方法有&#x…

LeetCode-1475. 商品折扣后的最終價格【棧 數組 單調棧】

LeetCode-1475. 商品折扣后的最終價格【棧 數組 單調棧】 題目描述&#xff1a;解題思路一&#xff1a;暴力解法。兩層for。解題思路二&#xff1a;單調棧&#xff0c;具體思路是反向遍歷數組prices。遇到棧頂元素小于當前元素的就出棧&#xff0c;目的是為了找到當前位置右邊的…

基于JAVA+SpringBoot+Vue的前后端分離的旅游網站

?全網粉絲20W,csdn特邀作者、博客專家、CSDN新星計劃導師、java領域優質創作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取項目下載方式&#x1f345; 一、項目背景介紹&#xff1a; 近年來&#xff0c;隨…

區塊鏈的可拓展性研究【01】layer1

什么是一層網絡&#xff1f; 一層網絡是底層區塊鏈。以太坊和比特幣都是一層網絡區塊鏈&#xff0c;因為它們是基石&#xff0c;各種二層網絡都構建于其上。二層網絡項目的示例包括以太坊上的“卷疊”和基于比特幣的閃電網絡。所有這些二層網絡項目上的用戶交易活動最終都可以回…

IntelliJ IDEA 自帶的 HTTP Client接口調用插件,替代 Postman

文章目錄 引言建議目錄結構新建請求不同環境的變量配置添加環境http-client.env.jsonhttp-client.private.env.json引用變量 請求示例Get請求示例Post請求示例鑒權示例斷言示例Websocket請求示例 內置對象和動態變量內置對象&#xff1a;內置變量&#xff1a; 引言 在日常的 W…

關于引用unpkg.com的mars3d相關依賴文件報錯無法請求的說明

問題來源&#xff1a; 1.關于引用unpkg.com的mars3d相關依賴文件報錯無法請求的說明 說明&#xff1a; 1.最近npm、unpkeg都訪問異常&#xff0c;可能是unpkg.com等國外的服務器不穩定導致的請求未響應。 解決方案&#xff1a; 1.請切換靜態文件引入的方式請求相關資源。參…

LaTex:如何在數學環境下打出大的右括號“}“

一般來說多行公式打左大括號都知道使用語法"cases" \begin{cases} foo\\ foo\\ \end{cases}最近需要鍵入右邊大花括號括起來公式的時候犯難了&#xff0c;搜了很多用的都是"\left.array\right}"&#xff0c;看得我昏迷&#xff0c;屢屢報錯。 突然想起很久…

selenium自動化(中)

顯式等待與隱式等待 簡介 在實際工作中等待機制可以保證代碼的穩定性&#xff0c;保證代碼不會受網速、電腦性能等條件的約束。 等待就是當運行代碼時&#xff0c;如果頁面的渲染速度跟不上代碼的運行速度&#xff0c;就需要人為的去限制代碼執行的速度。 在做 Web 自動化時…

PS背景色替換

1.打開ps后右鍵圖層復制 2.隱藏復制的圖層&#xff0c;選擇魔術橡皮擦擦掉不用替換的顏色 3.選中圖層后選擇顏色疊加修改圖層顏色

機器學習-SVM(支持向量機)

推薦課程&#xff1a;【機器學習實戰】第5期 支持向量機 |數據分析|機器學習|算法|菊安醬_嗶哩嗶哩_bilibili 贊美菊神ヾ ( ゜ⅴ゜)&#xff89; 一、什么是支持向量機&#xff1f; 支持向量機&#xff08;Support Vector Machine, SVM&#xff09;是一類按監督學習&#xff0…

RAID(冗余獨立磁盤陣列)介紹(一種用于存儲數據的技術,通過將數據分布在多個硬盤驅動器上,以提高數據的可靠性和性能)

文章目錄 RAID介紹什么是RAID&#xff1f;RAID的歷史RAID的類型RAID 0RAID 1RAID 5RAID 6 RAID的選擇和配置RAID在安裝系統時的應用結論 RAID介紹 RAID&#xff08;冗余獨立磁盤陣列&#xff09;是一種用于存儲數據的技術&#xff0c;它通過將數據分布在多個硬盤驅動器上&…

【神行百里】pandas查詢加速之行索引篇

最近進行大數據處理的時候&#xff0c;發現我以前常用的pandas查詢方法太慢了&#xff0c;太慢了&#xff0c;真是太慢了&#xff0c;查閱資料&#xff0c;遂發現了一種新的加速方法&#xff0c;能助力我飛上天&#xff0c;和太陽肩并肩&#xff0c;所以記錄下來。 1. 場景說明…

跨境獨立站優勢包括哪些?是否值得做呢?

跨境獨立站的優勢主要包括&#xff1a; 自主品牌建設&#xff1a;獨立站可以更好地展示自主品牌形象&#xff0c;提高品牌知名度和美譽度。 獨立域名&#xff1a;獨立站可以擁有自己的域名&#xff0c;更加穩定和可信。 自主運營&#xff1a;獨立站可以自主運營&#xff0c;包…

低版本echarts的升級到新版5.4.0的echarts瀏覽器預警和報錯信息

新版5.4.0的echarts瀏覽器預警和報錯信息 [ECharts] DEPRECATED: ‘normal’ hierarchy in itemStyle has been removed since 4.0. All style properties are configured in itemStyle directly now. 因為normal層被移除&#xff0c;問題代碼如下圖所示 itemStyle: {normal:…

MBR30200FCT-ASEMI大電流肖特基MBR30200FCT

編輯&#xff1a;ll MBR30200FCT-ASEMI大電流肖特基MBR30200FCT 型號&#xff1a;MBR30200FCT 品牌&#xff1a;ASEMI 封裝&#xff1a;TO-220F 最大平均正向電流&#xff1a;30A 最大重復峰值反向電壓&#xff1a;200V 產品引線數量&#xff1a;3 產品內部芯片個數&am…

系統韌性研究(7)| 韌性系統的16大指導原則

不良事件和條件可能會中斷系統&#xff0c;導致系統無法提供必要的功能和服務。正如我在本系列的前幾篇文章中所概述的那樣&#xff0c;韌性是大多數系統的一個基本質量屬性&#xff0c;因為它們提供了關鍵的能力和服務&#xff0c;盡管存在著不可避免的困難&#xff0c;但這些…

文件搜索項目知識介紹

項目背景SQLite介紹SQLite、驅動包下載SQLite使用SQLite和MySQL區別 JDBC搭配SQLiteJDBC原理-創建連接JDBC原理-關閉連接添加和發送SQLJDBC-事務開啟和提交 打包.exe文件線程池線程數量問題 項目背景 需求上&#xff1a;因為Windows的文件搜索工具搜索速度十分的慢&#xff1b…

虛幻學習筆記11—C++結構體、枚舉與藍圖的通信

一、前言 結構體的定義和枚舉類似&#xff0c;枚舉的定義有兩種方式。區別是結構體必須以“F”開頭命名&#xff0c;而枚舉不用。 額外再講了一下藍圖生成時暴露變量的方法。 二、實現 2.1、結構體 1、定義結構體 代碼如下&#xff0c;注意這個定義的代碼一定要在“UCLASS()”…

從零構建屬于自己的GPT系列6:模型本地化部署2(文本生成函數解讀、模型本地化部署、文本生成文本網頁展示、代碼逐行解讀)

&#x1f6a9;&#x1f6a9;&#x1f6a9;Hugging Face 實戰系列 總目錄 有任何問題歡迎在下面留言 本篇文章的代碼運行界面均在PyCharm中進行 本篇文章配套的代碼資源已經上傳 從零構建屬于自己的GPT系列1&#xff1a;數據預處理 從零構建屬于自己的GPT系列2&#xff1a;模型訓…

ThinkPHP連接ORACLE數據庫教程

目錄 概念基本步驟詳細操作問題排除參考 概念 要連接Oracle數據庫&#xff0c;必須有兩個東西&#xff0c;一個PHP官方寫的擴展&#xff0c;一個Oracle官方寫的客戶端PHP是通過擴展去操作oralce客戶端連接的服務端數據庫&#xff0c;所以兩個都不能少&#xff0c;而且版本必須…