初学QT的一些自我总结

初学QT的一些自我总结,如有错误还请见谅!!!!!

QT为控件添加图片:
1.使用ICon类,例:

QIcon icon1;

Incon1.addFile(“./xxx.png”);

Pushbutton->setIcon(icon1);

  1. 使用QPixmap,例
    QPixmap icon2(“./xxx.png”);

Pushbutton->setIcon(icon2);

Pushbutton->setFixedSize(icon2.size());

  1. 使用样式表,创建一个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());

利用信号与槽实现多线程的步骤:

  1. 继承Object自定义一个类,该类中实现一个槽函数(也就是一个线程函数),实现线程要完成的工作;
  2. 在main()函数中实例化一个QTread对象,用来管理子线程;
  3. 用继承自Object的自定义类来实例化一个对象,通过moveToThread将自己放到线程QThead对象中;
  4. 使用connect()函数连接信号与槽;
  5. 调用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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值