赞
踩
简介:qtcreator是跨平台的qt IDE,集成了 Qt Designer、Qt Assistant、Qt Linguist、图形化的 gdb 调试以及qmake 构建工具等,具有图形可视化功能,支持的系统包括Linux,Mac,Windows。它的编程环境采用c++语言,界面采用信号与槽机制,操作简单,直接拖拽即可,能够实现很多功能,以下是我在研一下嵌入式课程学习中对qtcreator使用方法的总结。
标准输入输出功能: QDebug
QString name = ui->lineEdit(部件名称)->text(); //接收字符串,创建一个name变量来接收lineEdit中的字符串
ui->lineEdit->setText(QString::number(c)); //输出字符串,将int整型c转化为字符串c输出到lineEdit的输入框中
qDebug()<<"登录成功"<<endl;
ui->label->setText("xxx"); //输出字符串
QString name = ui->label->text(); //接收字符串 放到name中
textEdit
第一种 文本形式赋值 ui->textEdit->setText("abc");
第一种 文本形式获取 qDebug() << ui->textEdit->toPlainText() << endl;
第二种 html格式赋值 ui->textEdit->setHtml("<strong>22222</strong>"); //加粗
第二种 html格式获取 qDebug() << ui->textEdit->toHtml() << endl;
将按钮button属性checkable和checked打勾,同时转到槽设置为click(bool),可实现true和false交替进行,后面在播放器可以用到,按一下播放,再按一下暂停
this->close();
5.1 生成解决方案 qmake -project
5.2 生成Makefile文件 qmake
5.3 生成最终可执行程序 make
产生者(按钮等) 绑定(connect) 接受者
QObject::connect(ui->btn_data,SIGNAL(clicked(bool)),this,SLOT(doProcessClick(bool)));
产生者 信号 接受者 槽函数(先声明)
QString 字符串 QStringList 字符串列表 QString a; QStringList b; b.insert(0,a); //把a字符串放在字符串列表b的0索引位置上 左边为0索引 a.clear(); //清空字符串a b.count() //字符串列表b中字符串的个数 b.at(1) == "+" //判断列表b的第一个索引是否为+字符if(b.at(1) == "+"){} QString(b.at(0)).toInt() //将字符串列表b的第0个索引转化为QString类型,再转化为int整型 QString->int QString::number(c) //将int整型的c转化为QString类型 int->QString currentNum.toInt //将字符串currentNum转化为整型数据 QString->int toStdString() //包含头文件string.h std::string str = a.toStdString(); QString->string append() 尾部字符串拼接 //s.append(c) append函数是向string的后面追加c字符或字符串 //append(c,3); // 把c类型字符串s的前n个字符连接到当前字符串结尾 arg QString i = "Test" ,QString total = "totalTest" arg(i)替代%1 , arg(total) replaces %2 split // 分割字符串 name.split(" ",n) 即以空格作为分隔符,包含\n,分割成n+1个 chop //字符串倒位剔除 a.chop(int n) 从最高索引开始剔除n个字符 a.remove(0,1) //清除掉字符串a中的从第0个索引开始向右一个 a.remove(2.3) //从2索引开始向右清除3个字符 '1'+'2' = '12' //字符串直接相加 拼接 void Widget::on_btn_sum_clicked() { if(b.count()==2){ b.insert(2,a); if(b.at(1) == "+"){ int v3 = QString(b.at(0)).toInt() + QString(b.at(2)).toInt(); ui->result->setText(QString::number(v3)); } } }
QProcessBar 和 QTimer的联合使用 .h文件private声明定时器 private slots: void doProcesstimeout(); void doProcessstart(bool); void doProcessend(bool); private: QTimer *mytimer; int num ; .cpp文件中 mytimer = new QTimer(this); connect(mytimer,SIGNAL(timeout()),this,SLOT(doProcesstimeout())); connect(ui->btn_start,SIGNAL(clicked(bool)),this,SLOT(doProcessstart(bool))); connect(ui->btn_end,SIGNAL(clicked(bool)),this,SLOT(doProcessend(bool))); void Widget::doProcessstart(bool){ mytimer->start(100); //启动定时器,并且0.1s触发一次定时器,即触发一次doProcesstimeout事件 } void Widget::doProcessend(bool){ mytimer->stop(); //定时器停止 } void Widget::doProcesstimeout(){ num ++; ui->progressBar->setValue(num){ } --->>QTimer *mytimer = new QTimer; connect(mytimer,SIGNAL(timeout()),this,SLOT(doProcesstimeout())); mytimer->start(100);
#include <QMenu> ui->toolButton->setIcon(QIcon("../test06_toolbar/DD1.png")); ui->toolButton->setIconSize(QSize(300, 300)); //设置图片大小 图标按下有一些下拉框(菜单) QMenu *menu = new QMenu(this); //菜单 有一个下拉框 QAction * a1 = menu->addAction(QIcon("../test06_toolbar/DD1.png"),"声音1",this,SLOT(doProcess())); a1->setObjectName("声音1"); menu->addAction(QIcon("../test06_toolbar/DD2.png"),"声音2",this,SLOT(doProcess())); menu->addAction(QIcon("../test06_toolbar/DD3.png"),"声音3",this,SLOT(doProcess())); menu->addAction(QIcon("../test06_toolbar/DD4.png"),"声音4",this,SLOT(doProcess())); ui->toolButton->setMenu(menu); void Widget::doProcess(){ QAction *action = (QAction *)this->sender(); qDebug()<<action->objectName()<<endl; //即添加的objectname内容,没有设置对象名输出则为空"" qDebug()<<action->text()<<endl; //text内容即菜单标签上的内容(声音1/2/3) //qDebug()<<"声音1"<<endl; }
转到槽,clicked类型
void Widget::on_cbox_1_clicked()
{
if(ui->cbox_1->isChecked()){ //只有该按钮被选中时才输出
qDebug()<<ui->cbox_1->text()<<endl; //输出的是按钮cbox_1上的文本内容
}
}
void Widget::on_rbtn_1_clicked()
{
if(ui->rbtn_1->isChecked()){ //只有该按钮被选中时才输出
qDebug()<<ui->rbtn_1->text()<<endl; //输出的是按钮rbtn_1上的文本内容
}
}
#include <QTime> //产生种子 qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); //不产生种子则每次产生的随机数都一样 for (int i=0;i<10;i++) { qDebug()<<qrand()%100<<endl; //0-99的随机数 } void Widget::on_btn_compare_clicked() { int a = currentNum.toInt(); //字符串转化为整型类型 if (a>num) { ui->textEdit->setText("你输入的值过大"); currentNum.clear(); ui->lcdNumber->display(0); } else if (a==num) { ui->textEdit->setText("回答正确"); num = rand()%100; currentNum.clear(); ui->lcdNumber->display(0); } else { ui->textEdit->setText("你输入的值小了"); currentNum.clear(); //字符串清零 ui->lcdNumber->display(0); //lcdNumber数码管显示 } }
//动画显示gif
QMovie *movie = new QMovie("../test08_formtoform/1.gif"); //图片路径 注意是../或直接写上绝对路径
ui->label->setMovie(movie); //在label中播放gif动画
ui->label->setScaledContents(true); //自动缩放以适应控件大小
movie->start();
this->showFullScreen(); //如果需要全屏显示
//动画停止,清除(可以直接清除),并换为其他的静态图的过程:
mov->stop();
mov->deleteLater();
ui->label->setStyleSheet("border-image:url(:/new/prefix1/left_green.png)");
1.第一个窗体产生第二个窗体,在第一个窗体中include第二个窗体的头文件,同时创建出第二个类的全局指针对象,
#include "twoform.h";
twoForm *tf1 ; tf1 = new twoForm;
要显示第二个窗口,同时第一个窗口隐藏,在第一个窗体的槽函数中输入
tf1->show();this->hide();
2.第二个窗体返回到第一个窗体,在第二个窗体中.h文件中定义信号,同时在第二个窗体的button的槽函数中发出这个信号,并第二个窗体自身隐藏
signals:
void SignalShowOneForm();
emit SignalShowOneForm();
this->hide();
再在第一个窗体中connect这个信号,同时定义第一个窗体的槽函数来处理这个信号,信号的发出者是第二个窗体的指针对象tf1
connect(tf1,SIGNAL(SignalShowOneForm),this,SLOT(doProcessTwoFormRequest));
void oneform::doProcessTwoFormRequest(QString str){
this->show();
}
ui->label->hide(); //隐藏label ui->lcdNumber->hide(); //隐藏lcdNumber 实现功能:定时器计时在数码管上显示,计时结束后,lcd隐藏,label显示动画gif图 void Widget::init(){ //倒计时/// index = 10; ui->lcdNumber->display(index); mytimer = new QTimer(this); connect(mytimer,SIGNAL(timeout()), this, SLOT(doProcesstimeout())); mytimer->start(1000); ///动画播放/ movie = new QMovie("../test09_bomb/boom.gif"); ui->label->setMovie(movie); ui->label->setScaledContents(true);} void Widget::doProcesstimeout(){ index--; if(index==0) { ui->lcdNumber->hide(); ui->label->show(); mytimer->stop(); movie->start(); this->showFullScreen(); } else { ui->lcdNumber->display(index); } }
#include<QMessageBox> 点击一个按钮弹出一个文本框,可以定义文本框的标题,内容,和里面的选项 //about QMessageBox::about(this, "关于", "own by xxx xxx xxx"); //information QMessageBox::StandardButton ret = QMessageBox::information(this, "information", "xxxx",QMessageBox::Yes|QMessageBox::No|QMessageBox::Help, QMessageBox::No); //标题information,内容xxx,三个选项(yes,no,help), 聚焦No对话框 if (ret==QMessageBox::Yes) { qDebug()<<"yes"<<endl; } else if (ret==QMessageBox::No) { qDebug()<<"NO"<<endl; } else if (ret==QMessageBox::Help) { //对选中的yes,no,help做出对应的处理 qDebug()<<"help"<<endl; } //warning QMessageBox::warning(this, "warning", "xxxxxxx", QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);
#include<QColorDialog>
void Widget::on_pushButton_2_clicked()
{
QColor mycolor = QColorDialog::getColor(Qt::red, this,"get color");
if(mycolor.isValid()) //获取有效
{
QPalette pe =ui->label->palette();
pe.setColor(QPalette::WindowText, mycolor);
ui->label->setPalette(pe);
}
}
#include<QProcess> QProcess *myprocess; void Widget::init(){ myprocess = new QProcess(this); connect(myprocess,SIGNAL(readyRead()), this, SLOT(doProcessreadyread()));} //连接信号与槽 void Widget::on_btn_exec_clicked() { QString cmd = ui->lbl_cmd->text(); QString argument = ui->lineEdit->text(); QStringList ArrayArgument =argument.split(" "); //以空格作为分隔符 myprocess->start(cmd, ArrayArgument); //执行进程命令 } void Widget::doProcessreadyread(){ while (!myprocess->atEnd()) { QString str = QString(myprocess->readLine()).replace("\n",""); //将内容读出来,并且将换行符替换掉 ui->textEdit->append(str); //将读出的内容追加显示在textEdit上 } }
#include<QFileDialog>
QStringList array = QFileDialog::getOpenFileNames(this, "需要播放的文件",
"/home/pi/Music","video(*.mp3 *.avi *.mp4)"); //打开多个文件 array为一个数组
1. 终端播放 mplayer '音乐文件路径.mp4' 2. qt音乐播放器 4.设置各种函数 用到的头文件有 QFileDialog 需要打开音乐文件,有QProcess 后台打开mplayer进程 主要功能: ui页面设计 包括label用于显示视频,多个按钮功能(选择文件,上一首,播放,下一首,停止,音量调节旋钮) 并设置好图标icon 第一,将图片导入到qt工程中 add new --> Qt -->Qt Resource File -->添加前缀--添加文件(将文件选中添加进去 再保存) 第二,设置控件上的图标 icon --> Normal off --> 有三个点,点击,选择图片 --> 设置图标大小 iconsize --> 按钮边框隐藏 最下面的flat勾选 第三,设置各种槽函数和自定义函数 需要用到的头文件#include <QFileDialog>打开文件 #include <QProcess>调用进程打开mplayer 具体内容见/home/pi/qtproject/test12_myplayer 这里只列出.h文件中的声明 private slots: void on_btn_open_clicked(); //打开视频文件(里面调用playmovie()) void on_btn_play_clicked(); //播放视频 void on_btn_before_clicked(); //打开前一首视频 void on_btn_next_clicked(); //打开后一首视频 void on_volume_valueChanged(int value); //音量调节旋钮 void on_horizontalSlider_fast_valueChanged(int value); //视频进度条拖动条 private: void playmovie(const QString filename); //播放文件视频 private: Ui::Widget *ui; QStringList playlist; //字符串列表 void init(); int playindex; //播放视频文件的索引 void playmovie(const QString filename); //播放视频的函数 QProcess *playprocess; //新的进程执行mplayer int isplaying; //为0从未播放 1正在播放 2暂停状态 3结束状态 };
#include <QDate> #include <QTime> 1.QDate获取当地日期 年月日 QDate D1; D1 = QDate::currentDate(); QDate D2(1995,1,26); // 直接赋值D2 qDebug() << "D1:" << D1;//获取当前日期 qDebug() << "D2:" << D2; qDebug() << "year:" << D1.year();//获取年 qDebug() << "month:" << D1.month();//获取月 qDebug() << "day:" << D1.day() D1: QDate("2020-6-21") //输出的是2020-6-21 数据类型是QData D2: QDate("1995-01-26") year: 2020 month: 6 day: 21 isValid: true dayOfWeek: 3 dayOfYear: 325 daysInMonth: 30 daysInYear: 365 2.QTime获取当地时间 时分秒 QTime T1; T1=QTime::currentTime(); QTime T2(12,9,26); //输出QTime("12:09:26.000") qDebug() << "T2:" << T2; qDebug() << "T1:" << T1; //获取当前日期 qDebug() << "hour:" << T1.hour();//获取时 qDebug() << "minute:" << T1.minute();//获取分 qDebug() << "second:" << T1.second();//获取秒 qDebug() << "mesc:" << T1.mesc();//获取毫秒 T2: QTime("12:09:26.000") //输出的是12:09:26.000 数据类型是QTime T1: QTime("11:57:10.193") hour: 11 minute: 57 second: 10 msec: 193
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。