font
API | 說明 |
---|---|
font() | 獲取當前widget的字體信息.返回QFont對象. |
setFont(const QFont& font) | 設置當前widget的字體信息. |
屬性 | 說明 |
---|---|
family | 字體家族.?如"楷體",“宋體”,"微軟雅?"等. |
pointSize | 字體?? |
weight | 字體粗細.以數值?式表?粗細程度取值范圍為[0,99] ,數值越?,越粗. |
bold | 是否加粗.設置為true,相當于weight為75.設置為false相當于weight為50. |
italic | 是否傾斜 |
underline | 是否帶有下劃線 |
strikeOut | 是否帶有刪除線 |
代碼?例:在Qt Designer中設置字體屬性
1)在界?上創建?個label
2)在右側的屬性編輯區,設置該label的font相關屬性
在這?調整上述屬性,可以實時的看到?字的變化.
3)執?程序,觀察效果
通過屬性編輯這樣的方式,雖然能夠快速方便的修改文字相關的屬性,但是還不夠靈活如果程序運行過程中,需要修改文字相關的屬性~~就需要通過代碼來操作了.
代碼?例:在代碼中設置字體屬性
#include "widget.h"
#include "ui_widget.h"
#include <QLabel>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QLabel* label = new QLabel(this);label->setText("這是一段文本");//創建字體對象QFont font;font.setFamily("仿宋");font.setPixelSize(30);font.setBold(true);font.setItalic(true);font.setUnderline(true);font.setStrikeOut(true);//把font對象設置到label中label->setFont(font);
}Widget::~Widget()
{delete ui;
}
toolTip
API | 說明 |
---|---|
setToolTip | 設置toolTip. ?標懸停在該widget上時會有提?說明. |
setToolTipDuring | 設置toolTip提?的時間.單位ms. 時間到后toolTip?動消失. |
toolTip只是給??看的.在代碼中?般不需要獲取到toolTip.
代碼?例:設置按鈕的toolTip
1)在界?上拖放兩個按鈕. objectName 設置為 pushButton_yes 和 pushButton_no
2)編寫widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//設置這兩個按鈕的toolTipsui->pushButton_yes->setToolTip("這是一個yes按鈕");ui->pushButton_yes->setToolTipDuration(3000);ui->pushButton_no->setToolTip("這是一個no按鈕");ui->pushButton_no->setToolTipDuration(7000);
}Widget::~Widget()
{delete ui;
}
msec=>毫秒 sec =>秒
usec =>微秒
1s = 1000 ms 1ms = 1000 us
國際單位制 (1000來換算的)
3)運?程序,觀察效果
可以看到?標停到按鈕上之后,就能彈出提?.時間到后??消失.
focusPolicy
設置控件獲取到焦點的策略.?如某個控件能否??標選中或者能否通過tab鍵選中.
API | 說明 |
---|---|
focusPolicy() | 獲取該widget的focusPolicy,返回Qt::FocusPolicy |
setFocusPolicy(Qt::FocusPolicy policy) | 設置widget的focusPolicy. |
Qt::FocusPolicy 是?個枚舉類型.取值如下 |
- Qt::NoFocus :控件不會接收鍵盤焦點
- Qt::TabFocus :控件可以通過Tab鍵接收焦點
- Qt::ClickFocus :控件在?標點擊時接收焦點
- Qt::StrongFocus :控件可以通過Tab鍵和?標點擊接收焦點(默認值)
- Qt::WheelFocus : 類似于 Qt::StrongFocus ,同時控件也通過?標滾輪獲取到焦點(新增
的選項,?般很少使?).
代碼?例:理解不同的focusPolicy
1)在界?上創建四個單?輸?框(Line Edit)
2)修改四個輸?框的 focusPolicy 屬性為 Qt::StrongFocus (默認取值,?般不?額外修改)
可以通過tab和鼠標點擊切換輸入框
3)修改第?個輸?框的 focusPolicy 為 Qt::NoFocus ,則第?個輸?框不會被tab/?標左鍵選中.
此時這個輸?框也就?法輸?內容了.
4)修改第?個輸?框 focusPolicy 為 Qt::TabFocus ,則只能通過tab選中,?法通過?標選中.
5)修改第?個輸?框 focusPolicy 為 Qt::ClickFocus ,則只能通過鼠標選中,?法通過tab選中.
styleSheet
通過CSS設置widget的樣式.
CSS(Cascading Style Sheets層疊樣式表)本?屬于??前端技術.主要就是?來描述界?的樣式.
所謂"樣式",包括不限于??,位置,顏?,間距,字體,背景,邊框等.
我們平時看到的豐富多彩的??,就都會?到?量的CSS.
Qt雖然是做GUI開發,但實際上和??前端有很多異曲同?之處.因此Qt也引?了對于CSS的?持.
CSS中可以設置的樣式屬性?常多.基于這些屬性Qt只能?持其中?部分,稱為QSS(Qt Style Sheet).具體的?持情況可以參考Qt?檔中"Qt Style Sheets Reference"章節.此處只是進??個簡單的演?.
代碼?例:設置?本樣式
1)在界?上創建label
2)編輯右側的styleSheet屬性,設置樣式
有三個點的按鈕,或者右鍵點擊label打開樣式表
font-family: '微軟雅黑';
font-size: 30px;
font-style: italic;
color: green;
此處的語法格式同CSS,使?鍵值對的?式設置樣式.其中鍵和值之間使? : 分割.鍵值對之間使?; 分割.
另外,Qt Designer只能對樣式的基本格式進?校驗,不能檢測出哪些樣式不被Qt?持.?如 textalign: center 這樣的?本居中操作,就?法?持.
編輯完成樣式之后,可以看到在Qt Designer中能夠實時預覽出效果.
3)運?程序,可以看到實際效果和預覽效果基本?致.
代碼?例:實現切換夜間模式.
1)在界?上創建?個多?輸?框(Text Edit)和兩個按鈕.
objectName 分別為 pushButton_light 和 pushButton_dark
2)編寫按鈕的slot函數.
void Widget::on_pushButton_light_clicked()
{//設置窗口的樣式this->setStyleSheet("background-color: white;");//設置輸入框的樣式ui->textEdit->setStyleSheet("background-color: white; color: black;");//設置按鈕的樣式ui->pushButton_light->setStyleSheet("color: black;");ui->pushButton_dark->setStyleSheet("color: black;");
}void Widget::on_pushButton_dark_clicked()
{//設置窗口的樣式this->setStyleSheet("background-color: black;");//設置輸入框的樣式ui->textEdit->setStyleSheet("background-color: black; color: white;");//設置按鈕的樣式ui->pushButton_light->setStyleSheet("color: white;");ui->pushButton_dark->setStyleSheet("color: white;");
}
- #333 是深?,但是沒那么?.
- #fff 是純??.
- #000 是純??.
在線調色板,調色板工具—在線工具
關于計算機中的顏?表?
計算機中使?"像素"表?屏幕上的?個基本單位(也就是?個發亮的光點).
每個光點都使?三個字節表?顏?,分別是R(red),G(green),B(blue)?個字節表?(取值范圍是0-255,或者0x00-0xFF).
混合三種不同顏?的數值?例,就能搭配出千千萬萬的顏?出來. - rgb(255, 0, 0) 或者 #FF0000 或者 #F00 表?純紅?.
- rgb(0, 255, 0) 或者 #00FF00 或者 #0F0 表?純綠?.
- rgb(0, 0, 255) 或者 #0000FF 或者 #00F 表?純藍?.
- rgb(255, 255, 255) 或者 #FFFFFF 或者 #FFF 表?純??.
- rgb(0, 0, 0) 或者 #000000 或者 #000 表?純??.
當然,上述規則只是針對?般的程序??是這么設定的.實際的顯?器,可能有8bit?深或者10bit?深等,實際情況會更加復雜
void Widget::on_pushButton_light_clicked()
{//設置窗口的樣式this->setStyleSheet("background-color: #f3f3f3;");//設置輸入框的樣式ui->textEdit->setStyleSheet("background-color: #fff; color: black;");//設置按鈕的樣式ui->pushButton_light->setStyleSheet("color: black;");ui->pushButton_dark->setStyleSheet("color: black;");
}void Widget::on_pushButton_dark_clicked()
{//設置窗口的樣式this->setStyleSheet("background-color: #333;");//設置輸入框的樣式ui->textEdit->setStyleSheet("background-color: #333; color: #fff;");//設置按鈕的樣式ui->pushButton_light->setStyleSheet("color: white;");ui->pushButton_dark->setStyleSheet("color: white;");
}