(原创)QT学习笔记(QT4.7)(笔记)

摘要:

       由于工作的关系,作者有幸接触了QT,并开发了一个小软件;作者之前并没有做过上位机的程序,也是第一次使用QT,中间遇到过很多的问题,在这里记录下来,主要是一些对象的应用和需要注意的地方,供大家参考。

介绍:

  1、QT Creator设置

  (1)、库路径及编译器路径设置 

  :/opt/FriendlyARM/toolschain/4.5.1/bin

    (2)、代码补全快捷键设置

     QT有代码补全功能,默认的快捷键是ctrl+空格,但这与输入法有冲突,所以需要修改一下,这里我改为alt+/。

      2、利用QT Designer来加速设计

  的确,对于新手来说,用qt designer来设计窗体是最容易上手不过了,我也是这样做的,但很多时候,需要一些动态的显示,或者需要通过一些事件来改变窗体,那么则需要用代码来完成了。

  比如说,让窗体最大化显示,或者隐藏标题栏,或者更改某一个对象的属性

this->setWindowFlags(Qt::FramelessWindowHint); //隐藏标题栏
this->showMaximized(); //最大化显示
ui->statusBar->showMessage(tr("这里是状态栏!"));
ui->pushButton_stop->setEnabled(false);//禁用掉UI里的button

  还有,如果要动态显示一些对象,而你又不知道代码如何写,则你可以先用qt designer编辑,然后再将代码复制过来,再修改。这样,对于新手来说,比重写代码要容易下手多了。

  3、close事件过滤

/********************************************************************
Function   :closeEvent
Parameter  :
return     : none
Called by  :
Description:
    close()事件过滤
********************************************************************/
void MainWindow::closeEvent(QCloseEvent *event)
{

    //如果设备打开==
    if(HostMod.isopen){
        QMessageBox::StandardButton button;
         button = QMessageBox::question(this, tr("退出程序"),
             QString(tr("警告:退出程序将强制关闭设备,您确定要继续吗?")),
             QMessageBox::Yes | QMessageBox::No);

         if (button == QMessageBox::No) {
             event->ignore();  //忽略退出信号,程序继续运行
         }
         else if (button == QMessageBox::Yes) {
             event->accept();  //接受退出信号,程序退出
         }
    }
}

  4、QMessageBox用法

  QMessageBox是信息对话框,用来提示信息和警告,它有很多类型,这里简单介绍两种,其它的大家可以看help

QMessageBox::critical(this, tr("打开失败"), tr("未能找到设备 "), QMessageBox::Close);
QMessageBox::information(this, tr("提示"), tr("参数设置成功!"), QMessageBox::Ok);

  5、定时器用法

#define TIMER_INTERVAL 100     // ms

........

timer1 = new QTimer(this);
 connect(timer1, SIGNAL(timeout()), this, SLOT(uart_send_data_event()));
 //开启串口发送监听定时器,
 timer1->start(TIMER_INTERVAL);

........

//timer1超时后就会触发这里
void pth6200_app::uart_send_data_event()
{

}

  6、QTimeEdit和QSpinBox用法

setting_widget::setting_widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::setting_widget)
{
    ui->setupUi(this);

    //限制时间范围
    QTime max_t(0,8,0);
    ui->timeEdit_zhenkong_timer->setMaximumTime(max_t);
    ui->timeEdit_heikong_timer->setMaximumTime(max_t);
    QTime min_t(0,2,0);
    ui->timeEdit_zhenkong_timer->setMinimumTime(min_t);
    ui->timeEdit_heikong_timer->setMinimumTime(min_t);


    connect(ui->timeEdit_zhenkong_timer, SIGNAL(timeChanged(const QTime &)), this, SLOT(SetParisChanged_Time(const QTime &)));
    connect(ui->spinBox_zk_temper, SIGNAL(valueChanged(int)), this, SLOT(SetParisChanged(int)));
    connect(ui->timeEdit_heikong_timer, SIGNAL(timeChanged(const QTime &)), this, SLOT(SetParisChanged_Time(const QTime &)));
    connect(ui->spinBox_hk_temper, SIGNAL(valueChanged(int)), this, SLOT(SetParisChanged(int)));

}

.......

 t_value=1000;//s
     QTime t1((t_value/3600)%60,(t_value/60)%60,t_value%60);//转换

    t_value=1314;//s
     QTime t2((t_value/3600)%60,(t_value/60)%60,t_value%60);//转换
//显示时间
    ui->timeEdit_zhenkong_timer->setTime(t1);
    ui->timeEdit_heikong_timer->setTime(t2); //

//显示温度

    ui->spinBox_zk_temper->setValue(device_par[1].temper);
    ui->spinBox_hk_temper->setValue(device_par[4].temper);

........

//获取时间和温度值
 //时间
    QTime t1=ui->timeEdit_zhenkong_timer->time();//获取当前值
    device_par[1].time=(t1.hour()*3600+t1.minute()*60+t1.second());

    QTime t2=ui->timeEdit_heikong_timer->time();//获取当前值
    device_par[4].time=(t2.hour()*3600+t2.minute()*60+t2.second());


    device_par[1].temper=ui->spinBox_zk_temper->value();//获取当前值
    device_par[4].temper=ui->spinBox_hk_temper->value();//获取当前值

 在qt designer里设置QSpinBox属性

 

  7、使用布局管理器时,如何设置对象的大小 

  在UI编辑器中,如果不用布局管理器,则界面不会随屏的大小变化而自动调整,同时,手动调整对齐也不具有科学性;但用了布局管理器后,却发现,先前调整的按钮大小,给改变了,而且怎么拖也拖不大。原来是布局管理器自动的给你调整了大小。但如何让我的按钮变大一点呢,这里只能通过minimum和maximum来设置,这样,布局管理器在调整对象的大小时,就会保持在这个范围。

  之前为这个问题郁闷了很久,后来才发现,原来这么简单。

  8、QT里如何显示中文

    (原创)QT 4.7支持中文(QT4.7)(中文)(makeqpf)

  9、QT里如何调用外部脚本程序

    (原创)如何在QT下执行shell或外部程序(QT4)(shell)(mini6410)(smplayer)

  10、QT中stylesheet用法

    (原创)QT Creator的style sheet的几种用法(QT Creator)(StyleSheet)(样式)(QT4.7)(用法)

结语:

     一个人独自摸索确实有很大的难度,再加上之前并没有做过上位机开发,所以有些概念很难理解,还好我坚持不懈,不断的找资料,看文档,终于算是搞清了门路。在资料方面,还是要看help,这样来得直接,来得快。

  



posted on 2011-08-30 12:52  liu_xf  阅读(3517)  评论(0编辑  收藏  举报

导航