qt串口通信的介绍

来源:互联网 发布:apache 转发 数据大小 编辑:程序博客网 时间:2024/06/05 10:11
void open_devmgmt::on_pushButton_clicked(){    //qt有类曰:QProcess。举例说明    QProcess *process = new QProcess;    process->start(tr("mmc devmgmt.msc"));    //打开设备管理器}void open_devmgmt::on_pushButton_2_clicked(){QGraphicsScene *scene = new QGraphicsScene;scene->addPixmap(QPixmap("D:/time.png"));ui.graphicsView->setScene(scene);//ui.graphicsView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//ui.graphicsView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);}void open_devmgmt::on_pushButton_3_clicked(){    QStatusBar *bar = ui.statusBar;    QLabel *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"));}

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"));

(实习编辑:HJ)


原创粉丝点击