Qt 基本控件的使用
程序员文章站
2022-05-28 11:55:11
...
控件是界面设计的基本部件,也是各大Qt组件中最基本的功能。本文将通过代码讲解Qt中复选框、单选框、文本框、布局控件的使用。
首先创建一个名为dialog的QDialog项目。然后回自动生成dialog.h、dialog.c、main.c。
本文中的例子包括三个复选框的水平布局,并用复选框来设置文本框中文字的下划线、斜体、加粗功能;包括三个单选框的水平布局,并用单选框来设置文本框文字的颜色;然后设置文本框中的文字内容和字体;并设置三个确定、取消、退出按钮;完成相关槽函数的连接。
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QCheckBox>
#include <QRadioButton>
#include <QPlainTextEdit>
#include <QPushButton>
class Dialog : public QDialog
{
Q_OBJECT
private:
//定义各个控件的指针
QCheckBox *chkBoxUnder;
QCheckBox *chkBoxItalic;
QCheckBox *chkBoxBold;
QRadioButton *rBtnBlack;
QRadioButton *rBtnRed;
QRadioButton *rBtnBlue;
QPlainTextEdit *txtEdit;
QPushButton *btnOK;
QPushButton *btnCancel;
QPushButton *btnClose;
void iniUI();//初始化界面函数
void iniSignalSlots();//初始化信号与槽函数
private slots://定义槽函数
void on_chkBoxUnder(bool checked);
void on_chkBoxItalic(bool checked);
void on_chkBoxBold(bool checked);
void setTextFontColor();
public:
Dialog(QWidget *parent = nullptr);
~Dialog();
};
#endif // DIALOG_H
头文件中定义了各控件的指针,定义了功能函数,定义了槽函数。
dialog.c
#include "dialog.h"
#include <QHBoxLayout>
//初始化界面
void Dialog::iniUI()
{
//创建复选框,水平布局
chkBoxUnder = new QCheckBox(tr("Underline"));//为三个复选框分配内存
chkBoxItalic = new QCheckBox(tr("Italic"));
chkBoxBold = new QCheckBox(tr("Bold"));
QHBoxLayout *HLay1 = new QHBoxLayout;//为水平布局控件分配内存
HLay1->addWidget(chkBoxUnder);//将三个复选框添加到水平布局中
HLay1->addWidget(chkBoxItalic);
HLay1->addWidget(chkBoxBold);
//创建单选框,水平布局
rBtnBlack = new QRadioButton(tr("Black"));
rBtnBlack->setChecked(true);
rBtnRed = new QRadioButton(tr("Red"));
rBtnBlue = new QRadioButton(tr("Blue"));
QHBoxLayout *HLay2 = new QHBoxLayout;
HLay2->addWidget(rBtnBlack);
HLay2->addWidget(rBtnRed);
HLay2->addWidget(rBtnBlue);
//创建按钮,水平布局
btnOK = new QPushButton(tr("确定"));
btnCancel = new QPushButton(tr("取消"));
btnClose = new QPushButton(tr("退出"));
QHBoxLayout *HLay3 = new QHBoxLayout;
HLay3->addStretch();
HLay3->addWidget(btnOK);
HLay3->addWidget(btnCancel);
HLay3->addStretch();
HLay3->addWidget(btnClose);
//创建文本框,设置字体
txtEdit = new QPlainTextEdit;
txtEdit->setPlainText("Hello Qt\n\nThis is a \"TextEdit\"");
QFont font = txtEdit->font();
font.setPointSize(15);
txtEdit->setFont(font);
//创建垂直布局,设置为主布局
QVBoxLayout * VLay = new QVBoxLayout;
VLay->addLayout(HLay1);
VLay->addLayout(HLay2);
VLay->addWidget(txtEdit);
VLay->addLayout(HLay3);
setLayout(VLay);
}
void Dialog::iniSignalSlots()
{
//单选框的信号与槽
connect(rBtnBlue, SIGNAL(clicked()), this, SLOT(setTextFontColor()));
connect(rBtnRed, SIGNAL(clicked()), this, SLOT(setTextFontColor()));
connect(rBtnBlack, SIGNAL(clicked()), this, SLOT(setTextFontColor()));
//复选框信号与槽
connect(chkBoxUnder, SIGNAL(clicked(bool)), this, SLOT(on_chkBoxUnder(bool)));
connect(chkBoxItalic, SIGNAL(clicked(bool)), this, SLOT(on_chkBoxItalic(bool)));
connect(chkBoxBold, SIGNAL(clicked(bool)), this, SLOT(on_chkBoxBold(bool)));
//按钮信号与槽
connect(btnOK, SIGNAL(clicked()), this, SLOT(accept()));
connect(btnCancel, SIGNAL(clicked()), this, SLOT(reject()));
connect(btnClose, SIGNAL(clicked()), this, SLOT(close()));
}
void Dialog::on_chkBoxUnder(bool checked)
{
QFont font = txtEdit->font();
font.setUnderline(checked);
txtEdit->setFont(font);
}
void Dialog::on_chkBoxItalic(bool checked)
{
QFont font=txtEdit->font();
font.setItalic(checked);
txtEdit->setFont(font);
}
void Dialog::on_chkBoxBold(bool checked)
{
QFont font=txtEdit->font();
font.setBold(checked);
txtEdit->setFont(font);
}
void Dialog::setTextFontColor()
{
QPalette plet = txtEdit->palette();
if (rBtnBlue->isChecked())
plet.setColor(QPalette::Text,Qt::blue);
else if (rBtnRed->isChecked())
plet.setColor(QPalette::Text,Qt::red);
else if (rBtnBlack->isChecked())
plet.setColor(QPalette::Text,Qt::black);
else
plet.setColor(QPalette::Text,Qt::black);
txtEdit->setPalette(plet);
}
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
iniUI();
iniSignalSlots();
setWindowTitle("基本控件演示");
}
Dialog::~Dialog()
{
}
源文件中是各个函数的具体实现,具体功能看代码注释。
最终可得到如下功能界面。
源码链接为:
上一篇: QT界面切换特效