QT入门知识----2024.8.21-9.28
一.MainWindow、Widget、Dialog区别
MainWindow可以放置菜单栏,工具栏,状态栏,托盘等;
Widget主要放布局和控件;
Dialog对话框
Widget是基类,有一个基本的类似画布的功能,window和dialog是继承类,各自增加了一些功能。
二.窗体Widget的大小缩放
函数
widget1->resize(m_width,m_height);
//该函数使得窗体的大小进行了改变,改变后大小为宽度m_width像素,高度m_height像素。
widget1->setgeometry(m_posx,m_posy,m_width,m_height);
//该函数使得窗体的 位置和大小发生改变,更加的随心所欲。
widget的位置是左上角的坐标,而坐标原点是整个屏幕的左上角, 往右往下为正。
hide()将窗体隐藏 ,由setvisable实现
show()显示
三.槽函数绑定相关-信号与槽
connect(sender,SIGNAL(bool),receiver,SLOT(int));
这使得不同的控件之间交流更加高效, 当qpush_button被按下或者文本框文本变化或是下拉选择框变化时都会触发信号,从而使得接收者控件因为执行槽函数而改变。
注意,signal和slot两个函数的参数都要有数据类型,但不能有实际的变量。
connect(ui>pushButton_2,&QPushButton::clicked,this,&Widget::onSetBlockedSignalStatus);
就如一些qt的书所言:建议在编写Qt5的代码时使用&类名::函数名的connect方式。
自定义信号与槽函数:
在类中声明:
signals:
void mySignal();//无需定义,只要声明就行
private:
void mySlots();//槽函数需要定义和声明
然后在cpp文件中connect信号与槽函数,在特定的情况下emit信号就行。
常见的信号有:
combobox.ischecked()//复选框是否被选中
qpushbutton.clicked()//点击
四.UI指针与this指针
在mainWindow.h中:
private: Ui::MainWindow *ui;
说明ui是UI命名空间中MainWindow的别名指针,它可以访问qt设计师中的各类控件,所以经常有ui->btn等等操作;
而this指针代表当前的MainWindow类,它可以访问这个类中定义的部分控件
五.格式化输出与读取
setText()可以改变文本内容,字符串需是qstring类型
ui->textEdit->setText(QString::fromStdString(str));
ui->textEdit->setText(QString::number(7));
number函数可以将数字转换为QString类型
有时候我们还需要对Double类型的数字进行输出和读取,方法如下:
float a;
QString::number(a,‘f’, 2); 保留两位小数int a=1;
格式化输出
QString str=QString::number(a).sprintf("%03d",a);
//或者
QString str=QString("%1").arg(a, 3, 10, QChar('0'));double x=ui->locate_x_lineEdit->text().toDouble();
setStyleSheet可以改变字体或者图片的格式
六.焦点改变
focusinEvent() //当焦点聚焦时
focusoutEvent() //当焦点离开时
可以据此更改控件的状态
七.寻找控件并删除或隐藏
QStatusBar* pStatusBar = findChild<QStatusBar*>(); //获取状态栏
pStatusBar->setVisible(false);
QList<QPushButton *> parentWidget= parentWidget->findChildren<QPushButton *>();