可视化ui设计
dialog头文件
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = nullptr);
~Dialog();
private slots:
void on_checkBoxunderline_clicked(bool checked);
void on_checkBoxitalic_clicked(bool checked);
void on_checkBoxbold_clicked(bool checked);
void setTextEditColor();
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
#include "./ui_dialog.h"
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::Dialog)
{
ui->setupUi(this);
QObject::connect(ui->radioButtonblack, SIGNAL(clicked()), this, SLOT(setTextEditColor()));
QObject::connect(ui->radioButtonred, &QRadioButton::clicked, this, &Dialog::setTextEditColor);
QObject::connect(ui->radioButtonblue, SIGNAL(clicked()), this, SLOT(setTextEditColor()));
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_checkBoxitalic_clicked(bool checked)
{
QFont font=ui->textEdit->font();
font.setItalic(checked);
ui->textEdit->setFont(font);
}
void Dialog::on_checkBoxbold_clicked(bool checked)
{
QFont font=ui->textEdit->font();
font.setBold(checked);
ui->textEdit->setFont(font);
}
void Dialog::on_checkBoxunderline_clicked(bool checked)
{
QFont font=ui->textEdit->font();
font.setUnderline(checked);
ui->textEdit->setFont(font);
}
void Dialog::setTextEditColor()
{
QPalette plet=ui->textEdit->palette();
if (ui->radioButtonred->isChecked())
plet.setColor(QPalette::Text,Qt::red);
else if(ui->radioButtonblue->isChecked())
plet.setColor(QPalette::Text,Qt::blue);
else if(ui->radioButtonblack->isChecked())
plet.setColor(QPalette::Text,Qt::black);
ui->textEdit->setPalette(plet);
}
connect函数在qt中作为连接信号和槽的函数,并不陌生。它目前有以下3种写法:
1、使用SIGNAL和SLOT宏
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(onPushButtonClicked()));
2、使用&类名::函数名
connect(ui->pushButton_2,&QPushButton::clicked,this,&Widget::onSetBlockedSignalStatus);
3、Lambda表达式,关联后直接编写信号发射后要执行的代码。不需要定义槽函数。
connect(ui->pushButton,&QPushButton::clicked,[=](void){
ui->label->setText("Hello Qt");
}
);
代码化ui设计
dialog头文件
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include<QCheckBox>
#include<QRadioButton>
#include<QPushButton>
#include<QPlainTextEdit>
class Dialog : public QDialog
{
Q_OBJECT
private:
QCheckBox *checkBoxUnderLine;
QCheckBox *checkBoxItalic;
QCheckBox *checkBoxBold;
QRadioButton* rbtnred;
QRadioButton* rbtnblack;
QRadioButton* rbtnblue;
QPlainTextEdit* plaintextedit;
QPushButton *btnok;
QPushButton*btncancel;
QPushButton* rbtnclose;
void init_ui();
void init_signalslots();
void on_checkUnderline(bool checked);
void on_checkItalic(bool checked);
void on_checkBold(bool checked);
void settextcolorblue(bool checked);
void settextcolorblack(bool checked);
void settextcolorred(bool checked);
public:
Dialog(QWidget *parent = nullptr);
~Dialog();
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
#include<QHBoxLayout>
#include<QVBoxLayout>
void Dialog::init_ui()
{
checkBoxUnderLine=new QCheckBox("UnderLine");
checkBoxItalic=new QCheckBox("Italic");
checkBoxBold=new QCheckBox("Bold");
QHBoxLayout *hlayout1=new QHBoxLayout;
hlayout1->addWidget(checkBoxUnderLine);
hlayout1->addWidget(checkBoxItalic);
hlayout1->addWidget(checkBoxBold);
rbtnred=new QRadioButton("Red");
rbtnblack=new QRadioButton("Black");
rbtnblue=new QRadioButton("Blue");
QHBoxLayout *hlayout2=new QHBoxLayout;
hlayout2->addWidget(rbtnblue);
hlayout2->addWidget(rbtnred);
hlayout2->addWidget(rbtnblack);
plaintextedit=new QPlainTextEdit();
QFont font=plaintextedit->font();
font.setPointSize(20);
plaintextedit->setFont(font);
plaintextedit->setPlainText("Hello World");
btnok=new QPushButton("OK");
btncancel=new QPushButton("Cancel");
rbtnclose=new QPushButton("Close");
QHBoxLayout *hlayout3=new QHBoxLayout;
hlayout3->addStretch();
hlayout3->addWidget(btnok);
hlayout3->addWidget(btncancel);
hlayout3->addStretch();
hlayout3->addWidget(rbtnclose);
QVBoxLayout *vlayout=new QVBoxLayout;
vlayout ->addLayout(hlayout1);
vlayout->addLayout(hlayout2);
vlayout->addWidget(plaintextedit);
vlayout->addLayout(hlayout3);
setLayout(vlayout);
}
void Dialog::init_signalslots()
{
QObject::connect(btnok, &QPushButton::clicked, this, &Dialog::accept);
QObject::connect(btncancel, &QPushButton::clicked, this, &Dialog::reject);
QObject::connect(rbtnclose, &QPushButton::clicked, this, &Dialog::close);
QObject::connect(checkBoxUnderLine, &QCheckBox::clicked, this, &Dialog::on_checkUnderline);
QObject::connect(checkBoxItalic, &QCheckBox::clicked, this, &Dialog::on_checkItalic);
QObject::connect(checkBoxBold, &QCheckBox::clicked, this, &Dialog::on_checkBold);
QObject::connect(rbtnblack,&QRadioButton::clicked, this, &Dialog::settextcolorblack);
QObject::connect(rbtnblue,&QRadioButton::clicked, this, &Dialog::settextcolorblue);
QObject::connect(rbtnred, &QRadioButton::clicked, this, &Dialog::settextcolorred);
}
void Dialog::on_checkUnderline(bool checked)
{
QFont font=plaintextedit->font();
font.setUnderline(checked);
plaintextedit->setFont(font);
}
void Dialog::on_checkItalic(bool checked)
{
QFont font=plaintextedit->font();
font.setItalic (checked);
plaintextedit->setFont(font);
}
void Dialog::on_checkBold(bool checked)
{
QFont font=plaintextedit->font();
font.setBold(checked);
plaintextedit->setFont(font);
}
void Dialog::settextcolorblue(bool checked)
{
if(rbtnblue->isChecked()){
QPalette pale=plaintextedit->palette();
pale.setColor(QPalette::Text,Qt::blue);
plaintextedit->setPalette(pale);
}
}
void Dialog::settextcolorblack(bool checked)
{
if(rbtnblack->isChecked()){
QPalette pale=plaintextedit->palette();
pale.setColor(QPalette::Text,Qt::black);
plaintextedit->setPalette(pale);
}
}
void Dialog::settextcolorred(bool checked)
{
if(rbtnred->isChecked()){
QPalette pale=plaintextedit->palette();
pale.setColor(QPalette::Text,Qt::red);
plaintextedit->setPalette(pale);
}
}
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
init_ui();
init_signalslots();
}
Dialog::~Dialog()
{
}