第一種方式:
connect(ui->rbtnRed,SIGNAL(clicked()),this,SLOT(setTextFontColor()));
說明:
ui->rbtnRed,是界面上的控件,即發出信號的主體;
clicked(),是對應控件的信號(鼠標點擊);
this,即當前窗口對象,指槽函數所屬對象(處理信號的主體);
setTextFontColor(),是自定義的槽函數,定義如下(Dialog.h):
private slots: void setTextFontColor();
槽函數的具體實現(Dialog.cpp):
void Dialog::setTextFontColor() { QPalette plet=ui->txtEdit->palette(); if(ui->rbtnBlue->isChecked()) plet.setColor(QPalette::Text,Qt::blue); else if(ui->rbtnRed->isChecked()) plet.setColor(QPalette::Text,Qt::red); else if(ui->rbtBlack->isChecked()) plet.setColor(QPalette::Text,Qt::black); ui->txtEdit->setPalette(plet); }
第二種方式:
connect(ui->rbtnRed,&QRadioButton::clicked,[this]{ QPalette plet=ui->txtEdit->palette(); if(ui->rbtnBlue->isChecked()) plet.setColor(QPalette::Text,Qt::blue); else if(ui->rbtnRed->isChecked()) plet.setColor(QPalette::Text,Qt::red); else if(ui->rbtBlack->isChecked()) plet.setColor(QPalette::Text,Qt::black); ui->txtEdit->setPalette(plet); });
說明:這里將槽函數部分進行簡略書寫,這樣可以不用提前定義一個槽函數,而是直接編寫函數實現。
如果信號標簽中帶參數:
connect(ui->chkUnderline,&QCheckBox::clicked,[this](bool checked){ QFont font = ui->txtEdit->font(); font.setUnderline(checked); ui->txtEdit->setFont(font); });
如果信號發送主體和接收主體,不再同一個線程中創建,則需要使用(跨)線程同步標記:
connect(this, &SystemSync::sendData_UDP, _SystemUart, &SystemUart::sendData_UDP, Qt::QueuedConnection);