QT系列之 代码搭建UI界面

最终效果图:【文章最后会放上代码】

一:不要勾选Generate Form

 

二:头文件中声明  控件  声明初始化UI界面的函数

三:构建控件

 

四:声明槽函数,定义槽函数

 

代码:

dialog.h文件

#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 *rBtnBlack;
QRadioButton *rBtnBlue;
QRadioButton *rBtnRed;
QPlainTextEdit *plainTxtEdit;
QPushButton *btnOK;
QPushButton *btnCancel;
QPushButton *btnClose;
void initUI();
void initSignalSlot();
private slots:
void onCheckUnderline(bool checked);
void onCheckItalic(bool checked);
void onCheckBold(bool checked);
void setTextFontColor();
public:
Dialog(QWidget *parent = nullptr);
~Dialog();
};
#endif // DIALOG_H

 

dialog.cpp文件

#include "dialog.h"
#include<QHBoxLayout>
#include<QVBoxLayout>
void Dialog::initUI()
{
checkBoxUnderLine = new QCheckBox(tr("UnderLine"));
checkBoxItalic = new QCheckBox(tr("Italic"));
checkBoxBold= new QCheckBox(tr("Bold"));;
QHBoxLayout *HLayout1 = new QHBoxLayout;
HLayout1->addWidget(checkBoxUnderLine);
HLayout1->addWidget(checkBoxItalic);
HLayout1->addWidget(checkBoxBold);
rBtnBlack = new QRadioButton(tr("Black"));
rBtnBlue = new QRadioButton(tr("Blue"));
rBtnRed = new QRadioButton(tr("Red"));
QHBoxLayout *HLayout2 = new QHBoxLayout;
HLayout2->addWidget(rBtnBlack);
HLayout2->addWidget(rBtnBlue);
HLayout2->addWidget(rBtnRed);
plainTxtEdit = new QPlainTextEdit();
QFont font = plainTxtEdit->font();
font.setPointSize(20);
plainTxtEdit->setFont(font);
plainTxtEdit->setPlainText("Hello Allen\n This is a sample");
btnOK = new QPushButton(tr("ok"));
btnCancel = new QPushButton(tr("Cancel"));
btnClose = new QPushButton(tr("Close"));
QHBoxLayout *HLayout3 = new QHBoxLayout;
HLayout3->addStretch();
HLayout3->addWidget(btnOK);
HLayout3->addWidget(btnCancel);
HLayout3->addStretch();
HLayout3->addWidget(btnClose);
QVBoxLayout *VLayout = new QVBoxLayout;
VLayout->addLayout(HLayout1);
VLayout->addLayout(HLayout2);
VLayout->addWidget(plainTxtEdit);
VLayout->addLayout(HLayout3);
setLayout(VLayout);
}
void Dialog::initSignalSlot()
{
connect(btnOK,SIGNAL(clicked()),this,SLOT(accept()));
connect(btnCancel,SIGNAL(clicked()),this,SLOT(reject()));
connect(btnClose,SIGNAL(clicked()),this,SLOT(close()));
connect(checkBoxUnderLine,SIGNAL(clicked(bool)),this,SLOT(onCheckUnderline(bool)));
connect(checkBoxItalic,SIGNAL(clicked(bool)),this,SLOT(onCheckItalic(bool)));
connect(checkBoxBold,SIGNAL(clicked(bool)),this,SLOT(onCheckBold(bool)));
connect(rBtnBlack,SIGNAL(clicked()),this,SLOT(setTextFontColor()));
connect(rBtnBlue,SIGNAL(clicked()),this,SLOT(setTextFontColor()));
connect(rBtnRed,SIGNAL(clicked()),this,SLOT(setTextFontColor()));
}
void Dialog::onCheckUnderline(bool checked)
{
QFont font = plainTxtEdit->font();
font.setUnderline(checked);
plainTxtEdit->setFont(font);
}
void Dialog::onCheckItalic(bool checked)
{
QFont font = plainTxtEdit->font();
font.setItalic(checked);
plainTxtEdit->setFont(font);
}
void Dialog::onCheckBold(bool checked)
{
QFont font = plainTxtEdit->font();
font.setBold(checked);
plainTxtEdit->setFont(font);
}
void Dialog::setTextFontColor()
{
QPalette plet = plainTxtEdit->palette();
if(rBtnBlack->isChecked())
plet.setColor(QPalette::Text,Qt::black);
else if(rBtnBlue->isChecked())
plet.setColor(QPalette::Text,Qt::blue);
else if(rBtnRed->isChecked())
plet.setColor(QPalette::Text,Qt::red);
else
plet.setColor(QPalette::Text,Qt::black);
plainTxtEdit->setPalette(plet);
}
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
initUI();
initSignalSlot();
}
Dialog::~Dialog()
{
}

 

posted @   江南王小帅  阅读(1325)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示