内容繁多,直接上代码
重点请看mainwindow.cpp的中代码和ui如何设计的
【1】main.cpp
#include "mainwindow.h" #include <qapplication> int main(int argc, char *argv[]) { qapplication a(argc, argv); mainwindow w; w.show(); return a.exec(); }
【2】mainwindow.h
#ifndef mainwindow_h #define mainwindow_h #include<qpushbutton> #include <qmainwindow> #include <qtextcodec>//解决字符编码乱码问题 #include<qtextedit> #include <qslider>//滑动杆 qt_begin_namespace namespace ui { class mainwindow; } qt_end_namespace class mainwindow : public qmainwindow { q_object public: mainwindow(qwidget *parent = nullptr); ~mainwindow(); public slots: private slots: void textbutton_1(); void on_pbt_clicked(); void on_pbj_clicked(); void on_pbl_clicked(); void on_pushbutton_8_clicked(); void on_pushbutton_9_clicked(); void on_pushbutton_11_clicked(); void on_pushbutton_13_clicked(); void on_pushbutton_12_clicked(); void on_pushbutton_10_clicked(); void display(int); void on_horizontalscrollbar_valuechanged(int value); void on_verticalscrollbar_valuechanged(int value); void on_horizontalslider_valuechanged(int value); void on_verticalslider_valuechanged(int value); void on_calendarwidget_clicked(const qdate &date); void on_pushbutton_15_clicked(); void on_pushbutton_14_clicked(); void on_pushbutton_17_clicked(); private: ui::mainwindow *ui; qtextcodec *codec; qstring filename; qpushbutton* bt_filename; qpushbutton* bt_getcolor; qpushbutton* bt_getfont; qpushbutton* bt_getinput; qpushbutton* bt_error; qpushbutton* bt_message; qpushbutton* bt_progress; qtextedit *te_test; qpushbutton *p1; qscrollbar *sb; }; #endif // mainwindow_h
【3】mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #include<qstring> #include<qprogressbar>//进度条头文件 #include<qdebug>//控制台输出 //==========================布局管理器 #include<qvboxlayout>//水平 #include<qhboxlayout>//垂直 #include<qgridlayout>//网格 //==========================各大对话框类 #include<qcolordialog> #include<qfiledialog> #include<qinputdialog> #include<qerrormessage> #include <qprogressdialog> #include <qfontdialog> #include<qfiledialog> #include<qmessagebox> //文件读写 #include <qfile> //行编辑 #include<qlineedit> //滚动条 #include<qscrollbar> //标签显示动画 #include<qmovie> mainwindow::mainwindow(qwidget *parent) : qmainwindow(parent) , ui(new ui::mainwindow) { ui->setupui(this); ui->progressbar->setvalue(0); codec = qtextcodec::codecforname("gbk");//设置字符编码 codec->setcodecforlocale(codec); setwindowtitle(codec->tounicode("ui学习笔记")); ui->stackedwidget->setcurrentindex(0);//显示当前索引,第一页 //文件对话框 connect(ui->pushbutton_2,&qpushbutton::clicked,[&]{qstring filename = qfiledialog::getopenfilename();ui->textedit_3->append(filename);}); //颜色对话框 connect(ui->pushbutton_3, &qpushbutton::clicked, [&](){ qcolor color = qcolordialog::getcolor(); ui->textedit_3->settextcolor(color); }); //字体对话框 bool ok; connect(ui->pushbutton_4,&qpushbutton::clicked,[&](){qfont font = qfontdialog::getfont(&ok); if(ok) { ui->textedit_3->setcurrentfont(font); } }); //输入对话框 connect(ui->pushbutton_5, &qpushbutton::clicked, [&](){ qstring str = qinputdialog::gettext(this, "title", "input"); ui->textedit_3->append(str); }); //信息对话框 connect(ui->pushbutton_6,&qpushbutton::clicked,[&](){ int ret = qmessagebox::information(this,"title","you yyds",qmessagebox::ok,qmessagebox::apply,qmessagebox::close); if(ret ==qmessagebox::ok) { ui->textedit_3->append("111111111111111111111111"); } }); //错误对话框 connect(ui->pushbutton_7, &qpushbutton::clicked, [&](){ qerrormessage *error= new qerrormessage; error->showmessage("error error error"); }); } mainwindow::~mainwindow() { delete ui; } //浏览按钮 void mainwindow::on_pbl_clicked() { filename = qfiledialog::getopenfilename();//文件对话框 ui->lineedit->settext(filename); } //加密按钮 void mainwindow::on_pbj_clicked() { //读写文件打开 qfile f(filename); if(!f.open(qiodevice::readwrite)) return; //读取全部内容 qbytearray buf = f.readall(); ui->textedit->append(codec->tounicode(buf));//加密前 ui->progressbar->setrange(0,buf.length()-1); for(int i=0; i<buf.length();i++) { buf[i]=~buf[i]; ui->progressbar->setvalue(i);//进度条 } ui->textedit_2->append(codec->tounicode(buf));//加密后 //回写 f.seek(0); f.write(buf); //关闭 f.close(); } //下一页 void mainwindow::on_pbt_clicked() { ui->stackedwidget->setcurrentindex(1); } //上一页: void mainwindow::on_pushbutton_8_clicked() { ui->stackedwidget->setcurrentindex(0); } //下一页 void mainwindow::on_pushbutton_9_clicked() { ui->pushbutton->seticonsize(qsize(80,80));//设置按钮图标大小 //ui->pushbutton->setflat(true);//设置无边框 ui->pushbutton->seticon(qicon("c:/users/sujieyin/pictures/saved pictures/1.png")); ui->pushbutton->show(); ui->toolbutton->seticonsize(qsize(50,50)); //ui->toolbutton->seticon(qicon("c:/users/sujieyin/pictures/saved pictures/1.png")); ui->toolbutton->settooltip("tip");//选中按钮时,会有提示文字 ui->toolbutton->settext("toolbutton"); ui->toolbutton->show(); //绑定快捷键 ui->toolbutton->setshortcut(qkeysequence(qt::ctrl+qt::key_w)); connect(ui->toolbutton,signal(clicked(bool)),this,slot(textbutton_1())); //radiobutton_2设置图标 ui->radiobutton_2->seticon(qicon("c:/users/sujieyin/pictures/saved pictures/1.png")); ui->radiobutton_2->click();//选中按钮 ui->radiobutton_2->setenabled(true);//设置使能 connect(ui->radiobutton_2, &qradiobutton::clicked, [&](){//lamda表达式(无名函数) qdebug()<<"radiobutton_2"; }); //checkbox按钮 ui->checkbox_2->seticon(qicon("c:/users/sujieyin/pictures/saved pictures/1.png")); connect(ui->checkbox_2, &qradiobutton::clicked, [&](){//lamda表达式(无名函数) qdebug()<<"checkbox_2"; }); //行编辑框使用举例 ui->lineedit_2->setechomode(qlineedit::password);//行编辑框输入隐藏 //选中检查框,显示密码, connect(ui->checkbox_3,&qcheckbox::clicked,[&](bool x){ ui->lineedit_2->setechomode(x?qlineedit::normal:qlineedit::password); } ); ui->stackedwidget->setcurrentindex(2);//显示这一页的所有部件 } //快捷键和单击按钮都可以触发 void mainwindow::textbutton_1() { qdebug()<<"ctrl+w"; } //下一页:实现输入小部件类组件 void mainwindow::on_pushbutton_13_clicked() { //组合k框 ui->combobox->additem("com1"); ui->combobox->additem("com2"); //点击文本后,显示文本 connect(ui->combobox,&qcombobox::currenttextchanged,[&](qstring x){ ui->label_5->settext(x);}); //字体选择框 connect(ui->fontcombobox,&qfontcombobox::currentfontchanged,[&](qfont x){ ui->label_6->setfont(x); ui->label_6->settext("okko"); ui->lineedit_3->setfont(x); ui->textedit_4->setcurrentfont(x); ui->plaintextedit->settooltip("123");//设置提示 ui->plaintextedit->appendplaintext("https://");//显示文本 }); //自旋框 ui->spinbox->setrange(0,10);//设置取值范围 connect(ui->spinbox,signal(valuechanged(int)),ui->lcdnumber,slot(display(int))); ui->stackedwidget->setcurrentindex(3); //旋钮 connect(ui->dial,signal(valuechanged(int)),ui->lcdnumber,slot(display(int))); //滚动条 //sb= new qscrollbar;//没有指定窗口,会自己弹出一个窗口; sb= new qscrollbar(ui->page_4);//只显示在这页【重点】 sb->setorientation(qt::horizontal);//设置水平方向 sb->setgeometry(20,500,100,10); sb->show(); connect(sb,signal(valuechanged(int)),ui->lcdnumber,slot(display(int))); ui->stackedwidget->setcurrentindex(3); } //上一页 void mainwindow::on_pushbutton_12_clicked() { ui->stackedwidget->setcurrentindex(1); } //下一页【第5页】 void mainwindow::on_pushbutton_11_clicked() { ui->label_8->setalignment(qt::aligncenter);//水平居中 ui->label_8->setscaledcontents(true);//设置标签自动缩放上面的图片 ui->label_8->setpixmap(qpixmap("c:/users/sujieyin/pictures/saved pictures/2.png")); ui->label_9->setalignment(qt::aligncenter);//水平居中 ui->label_9->setfixedsize(200,120); qmovie *m = new qmovie("c:/users/sujieyin/pictures/saved pictures/1.gif"); ui->label_9->setmovie(m);//设置动画 ui->label_8->setscaledcontents(true);//设置标签自动缩放上面的图片 m->start();//开启动画 //文本浏览框 ui->textbrowser->sethtml(codec->tounicode("<!doctype html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body> <h1>我的第一个标题</h1> <p>我的第一个段落。</p> </body> </html>")); //图形视图框架 //日历 ui->stackedwidget->setcurrentindex(4); } //上一页【第4页】 void mainwindow::on_pushbutton_10_clicked() { ui->stackedwidget->setcurrentindex(2); } //点击spinbox显示lcdnumber void mainwindow::display(int i) { ui->lcdnumber->setminimumheight(i);//设置最小行高 } //水平滑动条 void mainwindow::on_horizontalscrollbar_valuechanged(int value) { ui->lcdnumber->display(value);//显示值 } //垂直滚动条 void mainwindow::on_verticalscrollbar_valuechanged(int value) { ui->verticalscrollbar->setrange(0,100); ui->lcdnumber->display(value);//显示值 } //水平滑动滚动条 void mainwindow::on_horizontalslider_valuechanged(int value) { ui->lcdnumber->display(value);//显示值 } //垂直滑动滚动条 void mainwindow::on_verticalslider_valuechanged(int value) { ui->lcdnumber->display(value);//显示值 } //================================================== //单击日历时显示 void mainwindow::on_calendarwidget_clicked(const qdate &date) { ui->textbrowser->settext(date.tostring()); } //上一页 void mainwindow::on_pushbutton_15_clicked() { qdebug()<<"======================="<<endl; ui->stackedwidget->setcurrentindex(3); } //下一页 void mainwindow::on_pushbutton_14_clicked() { //groupbox容器 ui->radiobutton->setchecked(true);//设置检查 ui->verticallayout_2->addstretch(1);//添加伸长 ui->groupbox->setlayout(ui->verticallayout_2);//添加垂直部件 //scrollarea滚动窗口容器 ui->label_11->setpixmap(qpixmap("c:/users/sujieyin/pictures/saved pictures/2.png")); ui->scrollarea->setwidget(ui->label_11);//添加这个标签组件 ui->horizontallayout_3->addwidget(ui->scrollarea);//添加进水平部件 setlayout(ui->horizontallayout_3);//显示这个水平部件 //tool box工具箱 ui->toolbox->additem(ui->textedit_5,codec->tounicode("工具1")); ui->toolbox->additem(ui->textedit_6,codec->tounicode("工具2")); //tabwidget 选项卡-分页显示 ui->tabwidget->settabsclosable(true);//关闭 ui->tabwidget->addtab(ui->textedit_7,"t"); ui->tabwidget->addtab(ui->textedit_8,"b"); //点击x号后显示对应的文本 connect(ui->tabwidget,&qtabwidget::tabcloserequested,[&](int x){ ui->textedit_7->append(qstring::number(x).toutf8()); ui->textedit_8->append(qstring::number(x).toutf8()); }); //stackedwidget 堆叠窗口类 //本教程使用的就是这个部件,来达到上一页和下一页之间的切换,不在过多解释 //mdiarea 多媒体窗口 ui->mdiarea->addsubwindow(ui->textedit_9);//添加子窗口 ui->mdiarea->addsubwindow(ui->textedit_10); ui->stackedwidget->setcurrentindex(5); } //上一页 void mainwindow::on_pushbutton_17_clicked() { ui->stackedwidget->setcurrentindex(4); }
【4】ui界面设计
对象和类的布局和定义位置,位置很重要
【5】代码运行效果图
文件对话框,加密,显示在第一页
6大对话框在第二页
按钮类举例
输入小部件类和显示文本部件类和滑动部件类
日期,文本框,图片,gif图
容器部件类使用举例
总结
在后期,我将qt全部学习内容,做成应用程序游戏软件,以软件的形式活学活用,工程庞大,目前正在筹划,尽情期待
需要了解更多c/c++开发分享QT中大部分部件如何使用举例详解,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/1237596.html