目录
6、TimeEdit + DateEdit + TimeDateEdit
Qt里的基本控件->下_small建攻的博客-CSDN博客
一、setupUi
1、setupUi的作用
setupUi下面的作用的是用来初始化窗口上面的控件(是在设计里面拖过去的控件才有,如果是自己写的那么是不会有的),可以理解为在设计下拖的控件,那么要经过执行setupUi之后才会被创建,所以拖过去的控件使用就必须要在setupUi之后,不能在之前
例:
我们在这个ui->setupUi(this)上随便设置对控件的操作。我们也不难发现会报错,错误信息如下
这个结果也反映出对控件之后的使用一定要在setupUi之后,不能在之前。
在setupUi下面可以看到控件的定义,初始化,等等信息(通过设计设计好的属性,基本都会在这个里面看到调用的什么成员来初始化的),你把一个空间拖到界面上,然后构建,那么就能在setupUi下面看到实现,代码就有了。
2、ui
这个ui可以理解为我们的ui界面,在这个ui界面上的控件是通过ui->控件对象名字,来进行使用的(如果是自己的写的就不归它管)
二、button控件(按钮控件)
1、pushbutton
1. 1、button通过setText设置文字
//在类中定义一个bool isDown;构造中初始化为false,拖入一个button,直接修改名字为连接设备,转到槽写上如下代码,那么就能实现,点击按钮时断开和连接设备了
if(!isDown)
{
isDown=true;
ui->pushButton->setText("断开连接");
}
else
{
isDown=false;
ui->pushButton->setText("连接设备");
}
1. 2、button通过样式表,把按钮换成一个图片的形状
具体操作如下:
右键按钮
选择改变样式表,添加资源-->broder-image,选择你的图片,然后点OK,那么这个按钮就变成了一个图片的样子,就如下button,看起来是个图片但实际是一个按钮,只不过是一个图片形状的按钮
1.3、button通过setIcon设置按钮上有一个小图片
在构造函数中
ui->pushButton->
setIcon(QIcon("图片路径"));
得到一个button,可以通过其他方式,让他得到如上效果
2、toolButton控件
创建后拖上去即可
3、radiobutton控件
单选控件,如果所示,左边是一个分组,右边是一个分组可以单选选择
void Widget::on_radioButton_1_clicked(bool checked) {
if(checked) ui->radioButton_1->setChecked(true);//设置为选中
}
void Widget::on_radioButton_2_clicked(bool checked) {
if(checked) ui->radioButton_2->setChecked(true);//设置为选中
}
void Widget::on_radioButton_3_clicked(bool checked) {
if(checked) ui->radioButton_3->setChecked(true);//设置为选中
}
void Widget::on_radioButton_4_clicked(bool checked) {
if(checked) ui->radioButton_4->setChecked(true);//设置为选中
}
void Widget::on_radioButton_5_clicked(bool checked) {
if(checked) ui->radioButton_5->setChecked(true);//设置为选中
}
void Widget::on_radioButton_6_clicked(bool checked) {
if(checked) ui->radioButton_6->setChecked(true);//设置为选中
}
//然后设置一个确定按钮添加
QString str1,str2;
if(ui->radioButton_1->isChecked())//是否选中
str1+="1";
else if(ui->radioButton_2->isChecked())
str1+="2";
else if(ui->radioButton_3->isChecked())
str1+="3";
if(ui->radioButton_4->isChecked())
str2+="4";
else if(ui->radioButton_5->isChecked())
str2+="5";
else if(ui->radioButton_6->isChecked())
str2+="6";
//然后弹窗显示
QMessageBox::information(this,"你选择
了",str1+str2,QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);
4、checkbox控件
操作和radiobutton一样
5、commandlinkbutton控件
和pushbutton类似,只不过这个的显示是以图标+文件显示的
图标的修改,可以直接在这里设置
void Widget::on_commandLinkButton_clicked() {
QMessageBox::information(this,"你的选
择","str1+str2",QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);
}
6、Dialog button box控件
其实是一个按钮组,选择可以自己再属性的位子选择
三、InputWidgets 输入控件
1、comboxbox
双击这个控件,可以直接往里面加内容,一行一个
代码实现操作如下:
void Widget::on_comboBox_currentIndexChanged(int index) {
QString str;
switch(index) {
case 0:str=ui->comboBox->itemText(0);//获取第0行的字符串
break;
case 1:str=ui->comboBox->itemText(1);
break;
case 2:str=ui->comboBox->itemText(2);
break;
case 3:str=ui->comboBox->itemText(3);
break;
}
QMessageBox::information(this,"你的选
择",str,QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);
}
insertItem(2,"bb");//在第二个位置添加一个字符串
2、FontComboBox
让用户选择一个字体的部件
3、lineEdit
常用的修改属性
对齐格式输入
提示文本输入
是否只读
带清除按钮
带图片的输入框,先把图片加载一下,图片类型为ico,在构造函数中
ui->lineEdit->setPlaceholderText("这是个带ico的");
QAction *paction=new QAction(this);
paction->setIcon(QIcon("图片路径"));
ui->lineEdit->addAction(paction,QLineEdit::LeadingPosition);
读取和设置文本框的内容
QString str; str=ui->lineEdit->text();//获取单行edit中的内容
//而setText("引号里则是给文本框设置的内容")设置文本内容字符串 QMessageBox::information(this,"你选择
了",str,QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);
//如果是输入的内容是数字那么 str.toInt(),就能得到数字
lineEdit包含的方法
textChanged()文本发生改变
textEdited() 文本编辑信号
cursorPositionChanged()光标发生改变
returnPressed() 回车键或return按键按下信号
editingFinished()回车键或 return按键按下信号或者焦点丢失信号
selectionChanged() 只要选择改变这个信号就会被发射
4、text edit+plain text edit
上面是多行edit,下面是纯粹的文本,可以输入www.baidu.com就可以看出2个文本框之间的差异
获取里面的内容:
toPlainText();//获取Text中的内容或者Plain Text
5、spinbox+doublespinbox
这两个都是派生自QAbstractSpinBox的,分别是整数调节按钮和浮点数调节按钮,功能基本是一样的, 只是精度不一样
6、TimeEdit + DateEdit + TimeDateEdit
输出格式,三个都是通用的,yyyy:MM:dd:HH:mm:ss 表示 xxxx年:xx月xx日:xx时xx
包含头文件:
#include <QTime>
#include <QTimer>
定义QTimer qtimer; //这个是计时器
QTime time=QTime::currentTime();//获取时间 时分秒
ui->timeEdit->setTime(time);
QDate time2=QDate::currentDate();//获取时间 年月日
ui->timeEdit->setDate(time2);
//定义槽函数用来自动设置时间 void timeoutslot();
qtimer.start(1);//时间间隔为1ms
关联信号和槽,是计时器发的信号,信号为QTimer::timeout
connect(&qtimer, &QTimer::timeout,this, &Widget::timeoutslot);
//槽实现
void Widget::timeoutslot()
{
ui->timeEdit->setTime(QTime::currentTime());
ui->dateEdit->setDate(QDate::currentDate());
}
这里只实现了time的,其他两个的实现照搬这个就好了
从控件获取时间,调用date()获取年月日调用time获取时分秒
7、dial
valueChanged(int)信号,表示这个被修改了,可以直接获取到控件的值
void Widget::on_dial_valueChanged(int value) {
ui->label->setNum(value);
}
代码设置它的值,获取它的值
ui->dial->setValue(66);//获取值
ui->dial->value();//获取值