qt编写串口通信程序的介绍

作者:mt


【赛迪网讯】qt串口通信的介绍: 先open,然后set;可以先定义一个基本的PortSettings,然后打开串口,打开之后,在set各种属性。然后就可以开始通信了。因为windows上的串口是1-256,所以可以com1--com256都open一遍,能打开就说明此端口存在,不能打开就说没无此端口,然后对于打开成功的要记得关闭。这样就可以用一个comboBox显示可用端口。

关于new的部件,和qt的自动回收内存:

据大家公认和消息,(本人没有去搜索官方文档)对于局部的变量,new的部件,在窗口部件析构的时候,会自动被delete。所以对于写gui来说,我们一般都是在类h文件中,增加一下声明,然后在类的c文件中new,对于这些new的部件,都不用考虑delete问题。哈哈。

关于qt调用外部程序:

qt有类曰:QProcess。举例说明
QProcess *process = new QProcess;
process->start(tr("mmc devmgmt.msc"));   
//打开设备管理器
更详细说明,请参考帮助文档。



关于显示图片:


scene = new QGraphicsScene;
scene->addPixmap(QPixmap(":icon/logo.png"));
ui->graphicsView->setScene(scene);
ui->graphicsView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
ui->graphicsView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);



注意这个图片格式只能是png,别的显示不了,方然肯定也有其他的解决办法可以显示。我这里就改改图片格式,反正png大小更小,用起来更好。

关于QLabel和超链接

qt中的文本基本都能使用html,我使用的是qtCreator,右键出现rich text可编辑html文字;如果只是自己简单的等等,好像不起作用,使用它rich text编辑框来编辑,可生成完整的html,才起作用,自己只要稍作修改即可。对于超链接,还必须在代码中设置ui->label_4->setOpenExternalLinks(true); 否则超连接无效。

关于关闭窗口事件:


通过继承void MainWindow::closeEvent(QCloseEvent *e)
{
if(){
e->accept();
}else{
}
}
对于有快捷键关闭的,void MainWindow::keyPressEvent(QKeyEvent *ek)
{
if(ek->key()== (Qt::Key_Control + Qt::Key_Q)){
ek->accept();
}else{
}
}




关于状态栏:简单的可以只设置setStatusTip。复杂的就要定义一个StatusBar

两者可以共存。。

QStatusBar *bar = ui->statusBar;
lastLabel = new QLabel;   
lastLabel->setMinimumSize(150,20);    
lastLabel->setFrameShape(QFrame::WinPanel);
lastLabel->setFrameShadow(QFrame::Plain);
bar->addPermanentWidget(lastLabel);
//这个是靠右边增加    
//bar->addWidget(lastLabel);
//这个是靠左边增加
 lastLabel->setText(tr("Developed by xxx"));