1組件拖入ide
2佈局管理
函數
佈局以下:
佈局
3夥伴關係
功能:實現快捷鍵設置功能,在label中寫入&N,快捷鍵爲ALT+N跳轉到設置位置
字體
Tab順序編輯模式:
現象:按tab鍵,光標以固定順序移動ui
3信號與槽
QT設計的基礎:信號與槽(Signal&Slot)
信號:特定狀況被髮射的信號
槽:對發射信號的響應函數
信號與槽的關係:當信號被觸發時,關聯的槽函數自動執行。
信號與槽關聯用:
connect( sender , SIGNAL(Signal()) , receiver , SLOT(slot()));
connect()是Object類的一個靜態函數,而QObject是全部Qt類的基類
sender:發送信號的對象
Signal():發出的信號(須要括號,有參數是須要指明參數)
Receiver():接受信號的對象
Slot:槽函數(須要括號,有參數是須要指明參數)
connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(receiver()));
自動生成信號與槽並創建鏈接:this
第三種生成信號與槽的方法:
設計
信號與槽注意事項:
1一個信號能夠鏈接多個槽函數
connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(receiver()));
connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(close()));
執行順序是創建鏈接時的順序依次執行
2多個信號鏈接同一個槽
connect(ui->rbtnBlue,SIGNAL(clicked()),this,SLOT(seclocr()));
connect(ui->rbtnRed,SIGNAL(clicked()),this,SLOT(seclocr()));
connect(ui->rbtnBlack,SIGNAL(clicked()),this,SLOT(seclocr()));
任何一個RadioButtton被按下,都會執行seclocr()。
3一個信號能夠鏈接另一個信號
connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(reinfo()));
當一個信號發射時,另外一個信號也被髮射。
4通常要求信號與槽的參數個數與類型必須保持一致,但至少信號的參數不能少於槽的參數的個數。(信號參數個數>=槽參數個數)。
5信號與槽是當信號發射時,槽函數當即執行,執行完成後才進行後面的程序。3d
實例2
.hcode
private slots: void on_checkBox_clicked(bool checked); void on_checkBox_2_clicked(bool checked); void on_checkBox_3_clicked(bool checked); void changecolor();
.c對象
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->radioButton,SIGNAL(clicked()),this,SLOT(changecolor())); connect(ui->radioButton_2,SIGNAL(clicked()),this,SLOT(changecolor())); connect(ui->radioButton_3,SIGNAL(clicked()),this,SLOT(changecolor())); } MainWindow::~MainWindow() { delete ui; } //字體樣式設置 void MainWindow::on_checkBox_clicked(bool checked) { QFont font=ui->textEdit->font(); font.setUnderline(checked); ui->textEdit->setFont(font); } void MainWindow::on_checkBox_2_clicked(bool checked) { QFont font=ui->textEdit->font(); font.setItalic(checked); ui->textEdit->setFont(font); } void MainWindow::on_checkBox_3_clicked(bool checked) { QFont font=ui->textEdit->font(); font.setBold(checked); ui->textEdit->setFont(font); } //改變顏色 void MainWindow::changecolor() { QPalette pal=ui->textEdit->palette(); if(ui->radioButton->isChecked()) { pal.setColor(QPalette::Text,Qt::red); } else if(ui->radioButton_2->isChecked()) { pal.setColor(QPalette::Text,Qt::blue); } else if (ui->radioButton_3->isChecked()) { pal.setColor(QPalette::Text,Qt::black); } else { pal.setColor(QPalette::Text,Qt::black); } ui->textEdit->setPalette(pal); } } ui->textEdit->setPalette(pal); }
運行結果: