QT编程记录补充
第三章 :QT类库概述
本章讲述了一些知识点,都是比较基础的概念,对应的知识点请查看对应书籍,慢慢理解,这里补充不在细讲。
第四章 :常用界面设计组件
4.1 字符串与输入输出
4.1.1 字符串与数值之间的转换
先上布局,本例子为进制转换程序:
界面设计时使用最多的组件恐怕就是 QLable 与 QLineEdit,本例子就是使用:
对应头文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_btnCal_clicked(); //计算 按键单击响应
void on_btnDec_clicked(); //十进制转换为其他进制
void on_btnBin_clicked(); //二进制转换为其他进制
void on_btnHex_clicked(); //十六进制转换为其他进制
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
对应的cpp:
#include "widget.h"
#include "ui_widget.h"
#include <QString>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_btnCal_clicked()
{ //计算 按键单击响应
int num=ui->editNum->text().toInt(); //读取字符串为整数
float price=ui->editPrice->text().toFloat();//读取字符串为浮点数
float total=num*price;//相乘计算
QString str;
str=str.sprintf("%.2f",total); //格式化输出浮点数
ui->editTotal->setText(str);//在文本框里显示
}
void Widget::on_btnDec_clicked()
{ //读取十进制数,转换为其他进制
int val=ui->editDec->text().toInt();//读取十进制数
QString str=QString::number(val,16);// 显示为16进制 的字符串
str=str.toUpper(); //转换为全大写字母
ui->editHex->setText(str);//显示16进制字符串
str=QString::number(val,2);// 显示2进制的字符串
ui->editBin->setText(str);//显示二进制字符串
}
void Widget::on_btnBin_clicked()
{ //读取二进制数,转换为其他进制的数
bool ok;
int val=ui->editBin->text().toInt(&ok,2);//以二进制数读入
QString str=QString::number(val,10);//数字显示为10进制字符串
ui->editDec->setText(str);//显示10进制数字符串
str=QString::number(val,16);//显示为十六进制字符串
str=str.toUpper(); //全大写字母
ui->editHex->setText(str);//显示十六进制字符串
}
void Widget::on_btnHex_clicked()
{//读取16进制数,转换为其他进制的数
bool ok;
int val=ui->editHex->text().toInt(&ok,16);//以十六进制数读入
QString str=QString::number(val,10);// 显示为10进制字符串
ui->editDec->setText(str);//显示为10进制字符串
str=QString::number(val,2);// 显示二进制字符串
ui->editBin->setText(str);//显示二进制字符串
}
链接:本例子链接 提取码:3d0b
4.1.2 QString 的常用功能
运行的结果图:
上面的每一个按钮对应着QString对应的函数功能:
这里就直接上代码了,注释里面有很多介绍了:
对应头文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void on_pushButton_3_clicked();
void on_pushButton_4_clicked();
void on_pushButton_5_clicked();
void on_pushButton_6_clicked();
void on_pushButton_7_clicked();
void on_pushButton_8_clicked();
void on_pushButton_9_clicked();
void on_pushButton_10_clicked();
void on_pushButton_11_clicked();
void on_pushButton_12_clicked();
void on_pushButton_13_clicked();
void on_pushButton_14_clicked();
void on_pushButton_15_clicked();
void on_pushButton_16_clicked();
void on_pushButton_17_clicked();
void on_pushButton_18_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
对应cpp文件:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{//append()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=ui->comboBox2->currentText();
str1.append(str2);
ui->edtResult->setText(str1);
}
void Widget::on_pushButton_2_clicked()
{//prepend()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=ui->comboBox2->currentText();
str1.prepend(str2);
ui->edtResult->setText(str1);
}
void Widget::on_pushButton_3_clicked()
{//contains()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=ui->comboBox2->currentText();
bool chk;
chk=str1.contains(str2);
ui->checkBox->setChecked(chk);
ui->checkBox->setText("contains()");
ui->checkBox->sizeHint();
}
void Widget::on_pushButton_4_clicked()
{//count()函数
QString str1=ui->comboBox1->currentText();
int i=str1.count();
// int i=str1.length();
ui->spinBox->setValue(i);
ui->LabSpin->setText("count()");
}
void Widget::on_pushButton_5_clicked()
{//size()函数
QString str1;
str1=ui->comboBox1->currentText();
int i=str1.size();
ui->spinBox->setValue(i);
ui->LabSpin->setText("size()");
}
void Widget::on_pushButton_6_clicked()
{//endsWith()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=ui->comboBox2->currentText();
bool chk;
chk=str1.endsWith(str2);
ui->checkBox->setChecked(chk);
ui->checkBox->setText("endsWith()");
ui->checkBox->sizeHint();
}
void Widget::on_pushButton_7_clicked()
{//indexOf()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=ui->comboBox2->currentText();
int i;
i=str1.indexOf(str2);
ui->spinBox->setValue(i);
ui->LabSpin->setText("indexOf()");
}
void Widget::on_pushButton_8_clicked()
{//isEmpty()函数
QString str1;
str1=ui->comboBox1->currentText();
bool chk;
chk=str1.isEmpty();
ui->checkBox->setChecked(chk);
ui->checkBox->setText("isEmpty()");
ui->checkBox->sizeHint();
}
void Widget::on_pushButton_9_clicked()
{//lastIndexOf()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=ui->comboBox2->currentText();
int i;
i=str1.lastIndexOf(str2);
ui->spinBox->setValue(i);
ui->LabSpin->setText("lastIndexOf()");
}
void Widget::on_pushButton_10_clicked()
{//startsWith()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=ui->comboBox2->currentText();
bool chk;
chk=str1.startsWith(str2);
ui->checkBox->setChecked(chk);
ui->checkBox->setText("startsWith()");
ui->checkBox->sizeHint();
}
void Widget::on_pushButton_11_clicked()
{//toUpper()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=str1.toUpper();
ui->edtResult->setText(str2);
}
void Widget::on_pushButton_12_clicked()
{//toLower()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=str1.toLower();
ui->edtResult->setText(str2);
}
void Widget::on_pushButton_13_clicked()
{//trimmed()函数
QString str1;
str1=ui->comboBox1->currentText();
str1=str1.trimmed();
ui->edtResult->setText(str1);
}
void Widget::on_pushButton_14_clicked()
{//section()函数
int i;
QString str1,str2,str3;
str1=ui->comboBox1->currentText();
i=ui->spinBox->value();
// str2=str1.section('\\',2,2);
str3=ui->comboBox2->currentText();
if (QString::compare(str3,"\\",Qt::CaseInsensitive)==0)
str2=str1.section('\\',i,i+1); //
else
str2=str1.section(str3,i,i+1); //
ui->edtResult->setText(str2);
}
void Widget::on_pushButton_15_clicked()
{//left()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
int v=ui->spinBox->value();
str2=str1.left(v);
ui->edtResult->setText(str2);
}
void Widget::on_pushButton_16_clicked()
{//right()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
int cnt=str1.size();
int v=ui->spinBox->value();
str2=str1.right(cnt-v-1);
ui->edtResult->setText(str2);
}
void Widget::on_pushButton_17_clicked()
{//simplified()函数
QString str1;
str1=ui->comboBox1->currentText();
str1=str1.simplified();
ui->edtResult->setText(str1);
}
void Widget::on_pushButton_18_clicked()
{//isNull()函数
QString str1;
str1=ui->comboBox1->currentText();
bool chk;
chk=str1.isNull();
ui->checkBox->setChecked(chk);
ui->checkBox->setText("isNull()");
ui->checkBox->sizeHint();
}
append () 在字符串的后面添加字符串 , prepend () 在字符串的前面添加字符串
功能很多这里就不多说了,可以查对应函数功能,或者书籍。
链接:4.2QStirng例子 提取码:y0jr
4.2 SpinBox 的使用
本例子与第一个例子相同,只是采用了不同的空间,不需要把QString在转化成对应的数据。
先上图:
使用 QSpinBox 和 QdoubleSpinBox 进行数值量的输入输出很方便,
对应的属性要改,话不多说上例子吧:
对应的头文件;
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_btnCal_clicked(); //计算按键 clicked()响应
void on_btnDec_clicked();//读十进制数再用其他进制显示 的按键的 clicked()响应
void on_btnBin_clicked();//读二进制数再用其他进制显示 的按键的 clicked()响应
void on_btnHex_clicked();//读十六进制数再用其他进制显示 的按键的 clicked()响应
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
对应的cpp文件:
#include "widget.h"
#include "ui_widget.h"
#include <QString>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//“数量”和“单价”两个SpinBox的valueChanged()信号与on_btnCal_clicked()槽关联
QObject::connect(ui->spinNum,SIGNAL(valueChanged(int)),this,SLOT(on_btnCal_clicked())); //
QObject::connect(ui->spinPrice,SIGNAL(valueChanged(double)),this,SLOT(on_btnCal_clicked()));
QObject::connect(ui->spinDec,SIGNAL(valueChanged(int)),
this,SLOT(on_btnDec_clicked()));//spinDec 十进制显示的SpinBox
QObject::connect(ui->spinBin,SIGNAL(valueChanged(int)),
this,SLOT(on_btnBin_clicked()));//spinBin 二进制显示的SpinBox
QObject::connect(ui->spinHex,SIGNAL(valueChanged(int)),
this,SLOT(on_btnHex_clicked()));//spinHex 十六进制显示的SpinBox
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_btnCal_clicked()
{ //计算按键
int num=ui->spinNum->value(); //读取数量,直接是整数
float price=ui->spinPrice->value();//读取单价,直接是浮点数
float total=num*price;//相乘计算
ui->spinTotal->setValue(total); //直接显示浮点数
}
void Widget::on_btnDec_clicked()
{ //读取十进制,以其他进制显示
int val;
val=ui->spinDec->value();//读取十进制数
ui->spinBin->setValue(val); //设置数值即可,自动以二进制显示
ui->spinHex->setValue(val); //设置数值即可,自动以十六进制显示
}
void Widget::on_btnBin_clicked()
{ //读取二进制,以其他进制显示
int val=ui->spinBin->value();//读取spinBin里的二进制数,得到整数
ui->spinDec->setValue(val);//设置数值即可,自动以十进制显示
ui->spinHex->setValue(val);//设置数值即可,自动以十六进制显示
}
void Widget::on_btnHex_clicked()
{ //读取十六进制,以其他进制显示
int val;
val=ui->spinHex->value();//读取 spinHex 里的十六进制数,得到整数
ui->spinDec->setValue(val);//设置数值即可,自动以十进制显示
ui->spinBin->setValue(val);//设置数值即可,自动以二进制显示
}
链接:4.3Spin例子 提取码:a3qh
今天先补充到这里,剩下的明天更新,喜欢的就点个关注,需要资源的请私信我。