初学QT的一些自我总结,如有错误还请见谅!!!!!
QT为控件添加图片:
1.使用ICon类,例:
QIcon icon1;
Incon1.addFile(“./xxx.png”);
Pushbutton->setIcon(icon1);
- 使用QPixmap,例:
QPixmap icon2(“./xxx.png”);
Pushbutton->setIcon(icon2);
Pushbutton->setFixedSize(icon2.size());
- 使用样式表,创建一个QRC文件到工程中:
Pushbutton->setStyleSheet(tr(“background::url(:/icon/xxx.png);)”);
布局管理:
setSpacing():设置部件间的距离;
Addwidget():如果是两个参数的情况下,参数代表行和列;如果是四个参数,则代表从哪一行、从哪一列、跨几行、跨几列;
自定义事件:
Const static Type xxx = static_cast<*>(QEvent::User+0xFF);
QT事件(窗口拖动): QPoint xxx;//按下时窗口与鼠标的位置偏差;
鼠标按下:
void Widget::mousePressEvent(QMouseEvent *event)
{
if(Qt::LeftButton == event->button())
{
xxx = event->globalPos() - this->pos();
QCursor cursor;
cursor.setShape(Qt::ClosedHandCursor);
// cursor.setShape(Qt::OpenHandCursor);
QApplication::setOverrideCursor(cursor);
}
else
{
Widget::mousePressEvent(event);
}
}
鼠标移动:
void Widget::mouseMoveEvent(QMouseEvent *event)
{
if(Qt::LeftButton & event->buttons())
{
QPoint point;
point = event->globalPos() - xxx;
this->move(point);
}
else
{
Widget::mouseMoveEvent(event);
}
}
鼠标释放:
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
if(Qt::LeftButton == event->button())
{
QCursor cursor;
//cursor.setShape(Qt::ClosedHandCursor);//握拳;
cursor.setShape(Qt::OpenHandCursor);//张开手掌;
QApplication::setOverrideCursor(cursor);
}
else
{
Widget::mouseReleaseEvent(event);
}
}
隐藏窗口边缘功能:
setWindowsFlags(Qt::FramlessWindowHint);
在lineedit中显示字符:
lineEdit->setPlaceHolderText(“xxxx”);
LineEdit如何设置不显示中文:
使用正则表达式:
QRegExpValidator *xxx = new QRegExpValidator(QRegExp(“[a-zA-Z0-9]{25}”),this);
lineEdit->setValidator(xxx);
给combobox添加下拉内容:
QStringList xxx;
Xxx.clear();
Xxx<<tr();
Combobox->addItems(xxx);
QT数据库:
QSqlDatabase::drivers():查看支持的数据库类型;
QSqlDatabase::addDatabase():需要使用的数据库类型;
设置显示中文:QTextCodec::setCodecForLocal(QTextCodec::CodecForLocal());
利用信号与槽实现多线程的步骤:
- 继承Object自定义一个类,该类中实现一个槽函数(也就是一个线程函数),实现线程要完成的工作;
- 在main()函数中实例化一个QTread对象,用来管理子线程;
- 用继承自Object的自定义类来实例化一个对象,通过moveToThread将自己放到线程QThead对象中;
- 使用connect()函数连接信号与槽;
- 调用QThread对象的start()启动线程,此时会发出一个started()信号。
在程序异常结束的情况下查看有没有结束线程,并关联destroyed();
网络通信:
监听端口:xxx->listen(QHostAddress::Any,portEdit->text().toUInt());
常见错误:
Main.cpp:
Widget xxx;
Xx.show();
error:cannot bind non-const lvalue reference .....
错误原因:引用非const;
解决方法:在构造函数中添加const,例:widget(coonst QString &xxx);
Error:requiers a type specifier for all declaration...
错误原因:未将代码写入函数中;
解决方法:添加函数(void , int)