QT 基础ui设计

可视化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()
{
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

glassy_sky6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值