QT一些笔记

来源:互联网 发布:淘宝美工助理是什么 编辑:程序博客网 时间:2024/06/06 09:12

网格布局:

void QGridLayout::addWidget(QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0)

6个参数表示控件名,行,列,占用行数,占用列数,对齐方式


线程类QThread

创建继承QThread的线程类要包含一个virtual run()函数(可重载),因为QThread都是从这个函数开始执行。

而线程启动则是通过void QThread::start()函数。线程启动后会发出started信号,然后就执行run.

QMutex类互斥量提供的是线程之间的访问顺序化,用在串行线程的

QMutex的目的是保护一个对象、数据结构或者代码段,所以同一时间只有一个线程可以访问它。

void lock();用来锁一个互斥量,当拥有这个互斥量后,其他线程就不能再用,只能等待当这个互斥量被释放后,其他线程才可以获得这个锁。
void tryLock();试着锁一个互斥量,当获得锁后,返回true;如果其他线程已经锁住这个互斥量,则返回false。
void unlock();释放互斥锁,使得其他正在等待的线程就可以使用这个互斥量了。


QT串口

Qserialport

该类提供访问串口的功能。你可以使用QSerialPortInfo帮助类获取系统上可用的串口的信息,可以枚举系统上存在的所有串口。通过该类你可以获取串口的正确名称。你可以传递一个该类的对象作为setPort()或者setPortName()方法的参数指定想要访问的串口设备。
 

 serial.close();
            serial.setPortName(currentPortName);
            if (!serial.open(QIODevice::ReadWrite)) {
                emit error(tr("Can't open %1, error code %2")
                           .arg(portName).arg(serial.error()));
                return;
            }
 if (serial.waitForReadyRead(currentWaitTimeout)) {
//! [7] //! [8]
            // read request(接收)
            QByteArray requestData = serial.readAll();
            while (serial.waitForReadyRead(10))
                requestData += serial.readAll();

waitForReadyRead//当有可读数据的时候返回true,否侧超时返回false

// write response(发送)
           /* QByteArray responseData = currentRespone.toLocal8Bit();//
            serial.write(responseData);
            if (serial.waitForBytesWritten(waitTimeout)) {
                QString request(requestData);
//! [12]
                emit this->request(request);
//! [10] //! [11] //! [12]
            } else {
                emit timeout(tr("Wait write response timeout %1")
                             .arg(QTime::currentTime().toString()));
            }*/


QT的信号可以直接使用emit在发送。



QT模态对话框:DIALOG类exec();, 或者setModal(true);然后show(),而不用前面两种方法直接show()的是非模态对话框;





0 0
原创粉丝点击