Qt 打卡小程序總結

1.Qt::Alignment(枚舉類型)用于指定控件或文本的對齊方式

  • Qt::AlignLeft:左對齊。
  • Qt::AlignRight:右對齊。
  • Qt::AlignHCenter:水平居中對齊。
  • Qt::AlignTop:頂部對齊。
  • Qt::AlignBottom:底部對齊。
  • Qt::AlignVCenter:垂直居中對齊。
  • Qt::AlignCenter:等價于?Qt::AlignHCenter | Qt::AlignVCenter,即水平和垂直都居中對齊

2.保存為文本文件

void MainWindow::saveLog()
{//保存為日志文件,但是每次都是plainTextEdit覆蓋QFile file(fileName);if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {QTextStream out(&file);out << ui->plainTextEdit->toPlainText()<<endl;file.close();// 提示用戶保存成功(可選)ui->statusbar->showMessage("save Successfully",2000);} else {// 處理文件打開失敗的情況(可選)ui->statusbar->showMessage("Fail to save",2000);}
}
void MainWindow::saveLog_Append()
{//保存為日志文件,與上不同是QIODevice的方式QFile file(fileName);if (file.open(QIODevice::WriteOnly | QIODevice::Append)) {QTextStream out(&file);out << ui->plainTextEdit->toPlainText();file.close();// 提示用戶保存成功(可選)ui->statusbar->showMessage("save Successfully",2000);} else {// 處理文件打開失敗的情況(可選)ui->statusbar->showMessage("Fail to save",2000);}
}
void MainWindow::saveLog_Stream(QString strMessage)
{//換一種方式寫入QFile file(fileName);if (file.open(QIODevice::WriteOnly | QIODevice::Append)) {QTextStream stream(&file);stream << strMessage << endl; // 使用Qt::endl來確保跨平臺兼容性// file.flush(); // 可選,因為close()會刷新緩沖區file.close();}else{// 處理文件打開失敗的情況qDebug() << "無法打開文件!";}
}

3.邊框樣式(QFrame::Shape

  • QFrame::NoFrame:沒有邊框。
  • QFrame::Box:簡單的矩形邊框。
  • QFrame::Panel:與?Box?類似,但通常用于面板或窗口部件的背景。
  • QFrame::WinPanel:在 Windows 風格下,類似于?Panel,但在某些系統上可能有特定的繪制風格。
  • QFrame::HLine:水平線條。
  • QFrame::VLine:垂直線條。
  • QFrame::StyledPanel:使用當前樣式表(如果可用)來繪制邊框。
  • QFrame::Plain:與?NoFrame?類似,但在某些平臺上可能有細微的差別。
  • QFrame::Raised:凸起的邊框。
  • QFrame::Sunken:凹陷的邊框。

4.陰影效果(QFrame::Shadow

  • QFrame::Plain:沒有陰影效果。
  • QFrame::Raised:凸起的陰影效果。
  • QFrame::Sunken:凹陷的陰影效果。

組合使用

frame->setFrameStyle(QFrame::Box | QFrame::Sunken);//一個凹陷的矩形邊框

5.為標簽添加超鏈接

QLabel *labVersion = new QLabel("版本標簽");//ctrl+Alt+down 快速向下復制    
labVersion->setFrameStyle(QFrame::Box|QFrame::Raised);//矩形邊框和突起
labVersion->setText(tr("<a href=\"http://www.baidu.com\">超鏈接測試</a>"));
labVersion->setOpenExternalLinks(true);//設置可以打開網站鏈接
ui->statusbar->addPermanentWidget(labVersion);//顯示永久信息

6.創建菜單欄

QAction * newAct =  new  QAction(QIcon( ":/img_zll/images/100" ), tr( "新建" ),  this ); newAct->setShortcut(tr("Ctrl+N" ));
newAct->setStatusTip(tr("新建文件" ));//    QMenu *fileMenu = ui->menuBar->addMenu(tr("&File"));//創建主目錄
QMenu *fileMenu = menuBar()->addMenu(tr( "文件" ));
fileMenu->addAction(newAct);
fileMenu->addSeparator();//添加間隔器

7.設置應用程序窗口的圖標

制作圖標:ICO圖標在線轉換_ICO圖標制作工具_PNG在線轉ICO - ICO吧

QIcon icon(":/img_zll/images/paper.png"); // 使用資源路徑或文件路徑
w.setWindowIcon(icon);//或許也可以這樣?
//1、將ico格式圖片放入main文件同級目錄。
//2、在pro文件中添加:RC_ICONS = myico.ico#配置桌面軟件圖標

8.任務欄托盤菜單

restoreWinAction = new QAction("恢復(&R)",this);quitAction = new QAction("退出(&Q)",this);//恢復connect(restoreWinAction,SIGNAL(triggered()),this,SLOT(if_restoreWinAction_selected()));//退出connect(quitAction,SIGNAL(triggered()),qApp,SLOT(quit()));myAppMenu = new QMenu((QWidget*)QApplication::desktop());//添加菜單myAppMenu->addAction(restoreWinAction);//分隔符myAppMenu->addSeparator();myAppMenu->addAction(quitAction);//判斷系統是否支持托盤圖標if(!QSystemTrayIcon::isSystemTrayAvailable()){return;}QSystemTrayIcon *myTrayIcon = new QSystemTrayIcon(this);//設置圖標myTrayIcon->setIcon(QIcon(":/img_zll/images/time.ico"));//鼠標放托盤圖標上提示信息myTrayIcon->setToolTip("打卡記錄");//設置消息myTrayIcon->showMessage("托盤","托盤管理",QSystemTrayIcon::Information,10000);//托盤菜單myTrayIcon->setContextMenu(myAppMenu);//顯示myTrayIcon->show();
//恢復
void MainWindow::if_restoreWinAction_selected()
{this->show();
}

9.狀態欄

QStatusBar:狀態欄
狀態信息分為三類:
1、臨時信息 ? ?showMessage();
2、正常信息 ? ?addWidget添加一個QLable到狀態欄顯示
3、永久信息 addPermanentWidget
?

ui->statusBar->showMessage(tr("離開工位"),2000);QLabel *lable = new QLabel(this);
lable->setFrameStyle(QFrame::Box|QFrame::Sunken);
lable->setText("永遠相信美好的事情即將發生");// 創建一個容器小部件和水平布局  QWidget *container = new QWidget;  QHBoxLayout *layout = new QHBoxLayout(container);  // 創建一個水平間隔器  QSpacerItem *spacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);  // 創建QLabel  QLabel *label = new QLabel("標簽");  // 將間隔器和QLabel添加到水平布局中  layout->addItem(spacer); // 間隔器放在前面  layout->addWidget(label); // QLabel放在間隔器后面  // 設置容器的布局  container->setLayout(layout);  // 將容器小部件添加到狀態欄中  statusBar->addWidget(container);  

10.樣式

10.1內置樣式
#include <QApplication>
#include <QStyleFactory>int main(int argc, char *argv[])
{QApplication app(argc, argv);// 設置Fusion樣式app.setStyle(QStyleFactory::create("Fusion"));// 設置Windows樣式// app.setStyle(QStyleFactory::create("Windows"));// 設置macOS樣式// app.setStyle(QStyleFactory::create("Macintosh"));// 設置WindowsVista樣式// app.setStyle(QStyleFactory::create("WindowsVista"));// 設置WindowsXP樣式// app.setStyle(QStyleFactory::create("WindowsXP"));// ... 創建和顯示Qt對象return app.exec();
}
10.2 外部樣式表?
// main.cpp#include <QApplication>
#include <QFile>int main(int argc, char *argv[])
{QApplication app(argc, argv);// 創建一個樣式表文件對象QFile styleFile(":/styles.qss");  // 根據實際的文件路徑或資源路徑進行修改if (styleFile.open(QFile::ReadOnly)){// 讀取樣式表文件內容QString styleSheet = QLatin1String(styleFile.readAll());// 設置樣式表app.setStyleSheet(styleSheet);}// ... 創建和顯示Qt對象return app.exec();
}
10.3樣式的使用
10.3.1選擇器

選擇器(Selectors):用于選擇要應用樣式的UI元素,可以使用對象名(object name)或類名(class name)作為選擇器,也可以使用通配符和層級選擇器

//選擇器
QPushButton {color: red;                    // 應用到所有QPushButton類型的按鈕
}QCheckBox#myCheckBox {font-size: 14px;               // 應用到objectName為"myCheckBox"的QCheckBox
}QLabel.warning {background-color: yellow;      // 應用到class name為"warning"的QLabel
}
10.3.2屬性設置

可以使用屬性和值的形式來設置UI元素的外觀

QCheckBox:checked {color: green;                   // 設置選中狀態的文本顏色
}
10.3.3盒模型屬性

可以設置內邊距(padding),外邊距(margin),以及元素本身的尺寸和位置

QPushButton {padding: 5px;margin: 10px;width: 100px;height: 30px;                   // 設置內外邊距、寬度和高度
}QLabel {position: absolute;             // 設置絕對定位top: 50px;left: 100px;
}
10.3.4偽狀態(Pseudo-states)

用于設置特定狀態下的樣式,如鼠標懸停(hovered)、按下(pressed)

QPushButton:hover {background-color: lightgray;    // 鼠標懸停時的背景顏色
}/* 設置按下按鈕時的背景顏色和文本樣式 */
QPushButton:pressed {background-color: darkgray;color: white;
}/* 設置表格中奇數行的背景顏色 */
QTableView QAbstractItemView::item:nth-child(odd) {background-color: lightgray;
}/* 設置選中行的背景顏色和文本顏色 */
QTableView QAbstractItemView::item:selected {background-color: navy;color: white;
}QCheckBox:indeterminate {color: orange;                  // 設置不確定狀態的文本顏色
}QRadioButton:checked {image: url(checked.png);        // 設置選中狀態時的自定義圖像
}

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

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

相關文章

python表達式解析的陷阱與技巧

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一、引言&#xff1a;表達式的復雜性 二、案例分析&#xff1a;表達式的解讀 三、陷阱揭示…

解決問題:Collecting package metadata (current_repodata.json)--faile

目錄 解決步驟&#xff1a; 1、創建pip.ini文件&#xff1a;winR對話框中復制輸入&#xff1a;%APPDATA%&#xff0c;然后回車。 2、conda添加清華源&#xff1a; 3、這些創建完&#xff0c;重啟電腦就可以創建你的虛擬環境了 4、利用鏡像源下載庫&#xff1a; 5、查看to…

AOP總結

AOP是什么 AOP是面向切面編程&#xff0c;其目的是將橫切關注點從核心業務代碼中分離出來&#xff0c;通過動態代理等方式&#xff0c;實現代碼的增強和解耦&#xff0c;使得其具有更好的可維護性和可擴展性。 其中橫切關注點是多個類或對象的公共行為&#xff0c;如事務管理…

2024寶藏工具EasyRecovery數據恢復軟件免費版本下載

在這個數字化的時代&#xff0c;數據已經成為我們生活中的重中之重。無論是工作中的重要文件&#xff0c;還是手機中珍貴的照片&#xff0c;我們都依賴著這些數據。然而&#xff0c;數據丟失的情況時有發生&#xff0c;可能是誤刪&#xff0c;可能是設備故障&#xff0c;更可能…

java-方法

在 Java 編程語言中&#xff0c;方法是一段用于執行特定任務的代碼。方法是面向對象編程&#xff08;OOP&#xff09;的基礎之一&#xff0c;因為它允許我們在對象上執行操作。在 Java 中&#xff0c;方法是類的組成部分&#xff0c;這意味著它們與類緊密相關。本解釋將涵蓋 Ja…

vue3和vite實現vue-router4版本路由的配置以及自動生成路由配置

這個是普通的手動路由配置&#xff1a;https://blog.csdn.net/weixin_68658847/article/details/130071101 自動路由配置 創建項目 npm create vitelatest my-vue-app -- --template vue // 或者 yarn create vite my-vue-app --template vue// 安裝路由 yarn add vue-route…

Ansible02-Ansible Modules模塊詳解

目錄 寫在前面4. Ansible Modules 模塊4.1 Ansible常用模塊4.1.1 Command模塊4.1.2 shell模塊4.1.3 scrpit模塊4.1.4 file模塊4.1.5 copy模塊4.1.6 lineinfile模塊4.1.7 systemd模塊4.1.8 yum模塊4.1.9 get_url模塊4.1.10 yum_repository模塊4.1.11 user模塊4.1.12 group模塊4.…

IPv4 報頭 Protocol 字段和 IPv6 報頭 Next header 字段中的 IP 協議號列表

IPv4 基本報頭&#xff08;20 ~ 60 Byte&#xff09; IPv6 基本報頭&#xff08;40 Byte&#xff09; IPv4 Header vs IPv6 Header 黃色 為 IPv6 與 IPv4 相同 紅色 為 IPv6 刪除的 藍色 為名稱不同功能相同 中青色 為新增的 Type of service Traffic Class &#xff08;用于…

js知識點匯總之let const 和 var的區別

let const 和 var的區別 作用域 ES5 中的作用域有&#xff1a;全局作用域、函數作用域&#xff0c;ES6 中新增了塊級作用域。塊作用域由 { } 包括&#xff0c;if 語句和 for 語句里面的 { } 也屬于塊作用域。 var關鍵字 沒有塊級作用域的概念 // global scope {var a 10;…

AGI系列(2):掌握AI大模型提示詞優化術,從容應對各種提問場景

在上一篇大模型提示詞的文章中&#xff0c;筆者介紹一種通用提示詞優化的方法&#xff0c;這種方法基本上可以覆蓋大部分人的一般場景需求。 沒看到上文的讀者&#xff0c;可以通過如下鏈接去看下&#xff1a; &#x1f449;&#x1f449;&#x1f449; AGI系列&#xff08;1&a…

全網首發UNIAPP功能多的iapp后臺源碼

全網首發UNIAPP功能多的iapp后臺源碼&#xff0c;眾所周知UN Dev Assist 后臺是一款既不免費又不好用的后臺今天直接分享。 搭建教程在里面了&#xff0c;自己查看。 源碼下載&#xff1a;https://download.csdn.net/download/m0_66047725/89291994 更多資源下載&#xff1a;…

【Python】處理不平衡數據集的高級方法:ADASYN詳解

原諒把你帶走的雨天 在漸漸模糊的窗前 每個人最后都要說再見 原諒被你帶走的永遠 微笑著容易過一天 也許是我已經 老了一點 那些日子你會不會舍不得 思念就像關不緊的門 空氣里有幸福的灰塵 否則為何閉上眼睛的時候 又全都想起了 誰都別說 讓我一個人躲一躲 你的承諾 我竟然沒懷…

匯編原理(二)

寄存器&#xff1a;所有寄存器都是16位&#xff08;0-15&#xff09;&#xff0c;可以存放兩個字節 AX,BX,CX,DX存放一般性數據&#xff0c;稱為通用寄存器 AX的邏輯結構。最大存放的數據為2的16次方減1。可分為AH和AL&#xff0c;兼容8位寄存器。 字&#xff1a;1word 2Byte…

JVM學習-Class文件結構②

訪問標識(access_flag) 在常量池后&#xff0c;緊跟著訪問標記&#xff0c;標記使用兩個字節表示&#xff0c;用于識別一些類或接口層次的訪問信息&#xff0c;包括這個Class是類還是接口&#xff0c;是否定義為public類型&#xff0c;是否定義為abstract類型&#xff0c;如果…

健身房會員管理系統服務預約小程序的作用是什么

擁有完美身材/減肥/鍛煉等前往健身房是個不錯的選擇&#xff0c;商家生意開展需要吸引同城客戶并轉化&#xff0c;客戶也有自己的判斷需要找到更全面的場地&#xff1b;完善客戶消費流程利于品牌發展和不斷獲客轉化。 運用【雨科】平臺搭建健身房管理系統小程序&#xff0c;多…

MySQL事務篇1:事物的四大特性(ACID)、三類數據讀取問題與隔離級別

一、什么是事務&#xff1f; MySQL的事務&#xff08;Transaction&#xff09;是一組由數據庫管理系統&#xff08;DBMS&#xff09;執行的一個或多個SQL語句的集合&#xff0c;這些SQL語句作為一個單獨的工作單元執行。事務的主要目的是確保數據庫的一致性和完整性&#xff0c…

藍橋杯2023(十四屆)省賽——飛機降落(雙馬尾DFS)

飛機降落&#xff08;DFS&#xff09; 藍橋杯2023年第十四屆省賽真題-飛機降落 - C語言網 (dotcpp.com) 一開始我是真的沒想到用DFS做&#xff0c;我還在想用什么策略排序呢。需要再刷&#xff01;&#xff01;&#xff01; 雙馬尾的意思其實是刷了兩次... 一刷&#xff1a…

leecode 637 二叉樹的層平均值

leetcode 二叉樹相關-層序遍歷專題 二叉樹的層序遍歷一般來說&#xff0c;我們是利用隊列來實現的&#xff0c;先把根節點入隊&#xff0c;然后在出隊后將其對應的子節點入隊&#xff0c;然后往復此種操作。相比于二叉樹的遍歷遞歸&#xff0c;層序遍歷比較簡單&#xff0c;有…

CHI協議_1

作者&#xff1a;someone鏈接&#xff1a;https://www.zhihu.com/question/304259901/answer/3455648666來源。 1. AMBA CHI簡介 一致性總線接口&#xff08;CHI&#xff09;是AXI一致性擴展&#xff08;ACE&#xff09;協議的演進。它是Arm的AMBA總線的一部分。AMBA是一種免…

美團Java社招面試題真題,最新面試題

如何處理Java中的內存泄露&#xff1f; 1、識別泄露&#xff1a; 使用內存分析工具&#xff08;如Eclipse Memory Analyzer Tool、VisualVM&#xff09;來識別內存泄露的源頭。 2、代碼審查&#xff1a; 定期進行代碼審查&#xff0c;關注靜態集合類屬性和監聽器注冊等常見內…