Qt Creator 学习记录

上传人:飞*** 文档编号:29709037 上传时间:2021-10-08 格式:DOC 页数:13 大小:1.47MB
返回 下载 相关 举报
Qt Creator 学习记录_第1页
第1页 / 共13页
Qt Creator 学习记录_第2页
第2页 / 共13页
Qt Creator 学习记录_第3页
第3页 / 共13页
点击查看更多>>
资源描述
Qt Creator 的学习记录1.(1) 设置Qt显示中文 QTextCodec:setCodecForTr(QTextCodec:CodeForname(UTF-8);-QT4 注:QT5识别UTF-8,所以不需要这条代码。(2) QT结构Qt图形库是一个组织严谨的C+类库3.窗口部件3.1 Widget(1) Qt Creator提供的默认基类只有:QMainWindow、QWideget、QDialog。 QMainWindow提供带菜单栏和工具栏的主窗口类。 QDialog是各种对话框的基类,而他们全继承自QWidget。不仅如此,所有的窗口部件都继承自QWidget。(2) 建立一个新窗口QWidget*wdiget=new QWidget;/新建Qwidget类对象,默认parent参数是0,所以它是个窗口 QLabel*label= new QLabel;/新建QLabel对象,默认perent参数是0,所以它是个窗口(3) 设置窗口标题widget-setWindowTitle(QObject:tr(我是widget);/设置窗口标题(4) new操作符为label12分配空间,但是并没有用delete进行释放。这是因为Qt中销毁父对象的时候会自动销毁子对象。(5) 显示窗口信息label-setText(QObject:tr(“我是个label窗口”);(6) 设置窗口大小 label-resize(150,20); /150为X坐标,20为Y坐标。(7) 设置窗口位置label-move(200,100); /200为X坐标,100为Y坐标(8)更改新建窗口的类型QWidget*widget=new QWidget(0,Qt:Dialog|Qt:FramelessWindowHint);QLabel*label= new QLabel(0,Qt:SplashScreen|Qt:WindowStaysOnTopHint);Qt:Dialog:对话框类型Qt:SplashScreen:欢迎框类型Qt:FramelessWindowHint:一个没有边框的窗口Qt:WindowStaysOnTopHint:使该窗口停留在所有其他窗口上面(9)QDebug()函数QDebug()函数可以将调试信息直接输出到控制台,Qt Creator中是输出到应用程序输出栏。qDebug()geometry:geometryendlframe的区别如果定义如下:A *p则使用:p-play(); 左边是结构指针。A p 则使用:p.paly(); 左边是结构变量。总结:箭头(-):左边必须为指针;点号(.):左边必须为实体3.2 Dialog(1) 对话框分为:模态的(modal)和非模态的(modeless)模态对话框:就是在没关闭它之前,不能与同一应用程序的其他窗口进行交互。 要使一个对话框成为模态对话框,只需调用它的exec()函数即可。非模态对话框:既可以与它交互,也可以与同一应用程序的其他窗口进行交互。要建立一个非模态对话框,先用new操作建立,然后用show()函数显示。(2) 新建一个QDialog类,this参数QDialog*dialog=new QDialog(this); /定义了一个指向QDialog类对象的指针变量,new运算符开辟一个新的内存空间/dialog-setModal(true); /添加此程序可以变为模态对话框。dialog-show(); /建立非模态对话框 另一种: QDialog dialog(this);dialog.exec; /建立模态对话框 (3) setWindowModality():它有一个参数来设置模态对话框要阻塞的窗口类型。可以是:Qt:NonModal(不阻塞任何窗口,就是非模态) Qt:WindowModal(阻塞它的父窗口和所有祖先窗口以及它的子窗口) Qt:ApplicationModal(阻塞整个应用程序的所有窗口)而setModal()函数默认的设置的是Qt:ApplicationModal.(4) 信号和槽头文件中public slots: /自定义一个槽,且可以被类外调用void showChildDialog();信号槽快速声明方法:手动关联单击showChildDialog()槽,同时按下Alt+Enter键,选择“在mywidget.cpp中添加定义”,再按Enter。编辑器就会转到mywidget.cpp文件中,并已创建showChildDialog()信号槽的自动关联: connect(ui-showChildButton,SIGNAL(clicked(),this,SLOT(showChildDialog(); /connect()是QObject类中的函数, SIGNAL()、SLOTS()是宏(5) 颜色对话框 QColorDialogQColor color= QColorDialog:getColor(Qt:red,this,tr(颜色对话框); getColor()函数为QColorDialoog的静态函数,它的3个参数依次是(设置初始颜色、父窗口、对话框标题)/ 输出颜色信息qDebug()color:color;qDebug的输出信息:ARGB的4个数分别代表透明度(alpha)1.0代表完全透明,0.0代表完全透明红色(red)、绿色(green)、蓝色(blue)。(6)文件对话框QFileDialogQStringList fileNames = QFileDialog:getOpenFileNames(this,tr(文件对话框),F:,tr(图片文件(*png *jpg); /*png *jpg有一空格。 getOpenFileName()来获取文件名,以模态方式运行对话框。4个参数的作用分别是:指定父窗口、设置对话框标题、指定默认打开的目录路径、设置文件类型过滤器。如果不设置过滤器,默认是选择所有类型的文件。可以用“;”来设置不同类型的过滤器。tr(图片文件(*png *jpg);文本文件(*txt) qDebug() fileNames: pushButton_3-setFont(font);/ 如果按下“OK”按钮,那么让“字体对话框”按钮使用新字体(8) 输入对话框QInputDialog QString string = QInputDialog:getText(this,tr(输入字符串对话框), tr(请输入用户名:),QLineEdit:Normal,tr(admin),&ok);if(ok) qDebug() string:string;getText()提供一个可输入字符串的对话框,参数的作用分别是:指定父窗口、设置窗口标题、设置对话框中的标签显示的文本、设置输入的字符串的显示模式(显示用户输入的实际信息)、设置输入框中的默认字符串、设置获取按下按钮信息的bool变量。 int value1 = QInputDialog:getInt(this,tr(输入整数对话框), tr(请输入-1000到1000之间的数值),100,-1000,1000,10,&ok); if(ok) qDebug() value1:value1; getInt()提供一个输入整型数值的对话框,参数依次是(父窗口,设置窗口标题,设置对话框中标签显示的文本,默认显示的数值,可输入的最小值,可输入的最大值,使用箭头按钮每次增加10,设置获取按下按钮信息的bool变量) / 获取浮点数 double value2 = QInputDialog:getDouble(this,tr(输入浮点数对话框),tr(请输入-1000到1000之间的数值),0.00,-1000,1000,2,&ok); if(ok) qDebug() value2:value2;getDouble()提供输入浮点型数值的对话框,参数依次是(父窗口,设置窗口标题,设置对话框中标签显示的文本,默认显示的数值,可输入的最小值,可输入的最大值,小数的位数,设置获取按下按钮信息的bool变量)。/ 获取条目QStringList items; /定义QStringList类型的Items items tr(条目1) tr(条目2); /创建2个条目 QString item = QInputDialog:getItem(this,tr(输入条目对话框), tr(请选择一个条目),items,0,true,&ok); if(ok) qDebug() item:item;getItem()提供一个可输入条目的对话框,使用前要先创建几个条目。参数依次是(父窗口,设置窗口标题,设置对话框中标签显示的文本,默认显示列表的第0个参数(0就是第一个),设置获取按下按钮信息的bool变量)(9) 消息对话框QMessage/ 问题对话框 int ret1 = QMessageBox:question(this,tr(问题对话框), tr(你了Qt),QMessageBox:Yes,QMessageBox:No); if(ret1 = QMessageBox:Yes) qDebug()tr(问题!); / 提示对话框 int ret2 = QMessageBox:information(this,tr(提示对话框), tr(这是Qt书籍!),QMessageBox:Ok); if(ret2 = QMessageBox:Ok) qDebug()tr(提示!); / 警告对话框 int ret3 = QMessageBox:warning(this,tr(警告对话框), tr(不能提前结束!),QMessageBox:Abort); if(ret3 = QMessageBox:Abort) qDebug()tr(警告!); / 错误对话框 int ret4 = QMessageBox:critical(this,tr(严重错误对话框), tr(发现一个严重错误!现在要关闭所有文件!),QMessageBox:YesAll); if(ret4 = QMessageBox:YesAll) qDebug() tr(错误); / 关于对话框 QMessageBox:about(this,tr(关于对话框), tr(致力于Qt及Qt Creator的普及工作!);QMseeageBox创建了4种不同类型的消息对话框,参数分别是:(父窗口,标题栏,显示信息,和拥有的按钮)。这几个静态函数的返回值就是那些标准的按钮,它是枚举类型,根据返回值来判断用户按下那个按钮。 about()函数没有返回值,因为它默认只有一个按钮,与其相似的有aboutQt()函数,用来显示Qt版本的相关信息。(10)进度对话框QProgressDialogQProgressDialog dialog(tr(文件复制进度),tr(取消),0,50000,this); / 设置窗口标题 dialog.setWindowTitle(tr(进度对话框); / 将对话框设置为模态 dialog.setWindowModality(Qt:WindowModal); dialog.show(); / 演示复制进度 for(int i=0;i50000;i+) / 设置进度条的当前值 dialog.setValue(i); / 避免界面冻结 QCoreApplication:processEvents(); / 按下取消按钮则中断 if(dialog.wasCanceled() break; / 这样才能显示100%,因为for循环中少加了一个数 dialog.setValue(50000);qDebug() setWindowTitle(tr(错误信息对话框); dialog-showMessage(tr(这里是出错信息!);新建已QErrorMessage对话框,并用showMessage()函数显示错误信息,调用showMessage()函数时,对话框会以非模态的形式显示出来。(12) 向导对话框-QWizard类首先要在头文件MyWidget.h中添加private类型函数声明,private: Ui:MyWidget *ui; QWizardPage *createPage1(); /声明3个返回值为QWizardPage类对象的指针的函数。 QWizardPage *createPage2(); / QWizardPage *createPage3(); /然后在MyWidget.cpp文件中对函数进行定义:/ 向导页面1QWizardPage * MyWidget:createPage1() QWizardPage *page = new QWizardPage; page-setTitle(tr(介绍); return page;/ 向导页面2QWizardPage * MyWidget:createPage2() QWizardPage *page = new QWizardPage; page-setTitle(tr(用户选择信息); return page;/ 向导页面3QWizardPage * MyWidget:createPage3() QWizardPage *page = new QWizardPage; page-setTitle(tr(结束); return page;/ 向导对话框void MyWidget:on_pushButton_8_clicked() QWizard wizard(this); /新建QWizard类对象 wizard.setWindowTitle(tr(向导对话框); / 添加向导页面 wizard.addPage(createPage1();/使用addPage()函数添加3个页面 wizard.addPage(createPage2(); wizard.addPage(createPage3(); wizard.exec();3.3 QFrame类族QFrame类是带有边框的部件的基类,子类有最常见的标签部件QLabel,还有QLDNumber、QSplitter、QStackedWidget、QToolBox和QAbstracScrollArea类。(1)QLabel标签部件Label部件可以用来显示文本或者图片ui-label-setPixmap(QPixmap(E:/Qt Creator rdm/03/3-8/logo.png);/显示图片 QMovie *movie = new QMovie(E:/Qt Creator rdm/03/3-8/donghua.gif);/ 在标签中添加动画 ui-label-setMovie(movie);movie-start(); / 开始播放(2) QPushButton按钮部件QAbstractButton类是按钮部件的抽象基类,子类包括:复选框QCheckBox,标准按钮QPushButton单选按钮QRadiaoButton工具按钮QToolButton改变按钮的显示文本,在第一个字母前加“&”符号,那么就可以将这个按钮的加速键设置为Alt加上这个字母。要显示&本身,可使用“&”。 ui-pushBtn_1-setText(&nihao); ui-pushBtn_2-setText(帮助(&H));ui-pushBtn_3-setText(z&oom);(3) setIcon()函数给按钮添加图标,图片文件夹与工程同一级别,ui-pushBtn_2-setIcon(QIcon(./image/help.png);(4) 行编辑器QLineEditQLineEdit是一个单行文本编辑器,允许用户输入和编辑单行的纯文本文内容,而且提供一些列功能,包括撤销、恢复、剪切(5) 自动补齐功能QCompleter类实现 / 新建自动完成器 QCompleter *completer = new QCompleter(wordList, this); / 设置大小写不敏感 completer-setCaseSensitivity(Qt:CaseInsensitive);ui-lineEdit4-setCompleter(completer);/ 对LineEdit4进行自动补齐。(6) 数值设定框QAbstractSpinBox类是一个抽象类,提供一个数值设定框和一个行编辑器来显示设定值。包含3个子类:QDataTimeEdit日期时间QSpinBox 整数QDoubleSpinBox浮点数(7) QdataTimeEdit编辑日期和时间 ui-dateTimeEdit-setDateTime(QDateTime:currentDateTime(); /设置时间的显示格式ui-dateTimeEdit-setDisplayFormat(tr(yyyy年MM月dd日ddd HH时mm分ss秒); /ddd表示星期 HH表示小时,使用24小时制,如果最后有AM或这PM,则表示12小时制,如:ssA。4. 信号与槽(1)signs&slots一个信号 对应 一个槽、也可以关联多个槽 ;多个信号 关联 一个槽;一个信号 关联 一个信号;一个信号关联多个槽时,信号发射时,多个槽一个一个随机执行,无法指定执行顺序。(1) 声明一个自定义信号在头文件中signals:void dlgReturn(int); /自定义的信号声明一个信号类要使用signal关键字,在signal前面不能使用public,private,protect等限定符,因为只有定义该信号的类及其子类,才能发射信号,而且信号只用申明,不需要也不能对它进行定义实现。还要注意,信号没有返回值,只能时void类型。因为只有QObject类及其子类才能使用信号和槽机制。MyDialog类继承自QDialog类,而QDialog类继承自QWidget类,QWidget类是QObject类的子类,所以这里可以使用信号和槽。不过使用信号和槽必须在类声明的最开始处添加Q_OBJECT宏。而一般都会自动生成。(2) 发射信号 / 获取输入的数值 int value = ui-spinBox-value(); / 发射信号 emit dlgReturn(value);发射信号要使用一个关键字emit,然后用自定义的信号dlgReturn()将value发射出去。(3) 声明一个自定义槽private slots: void showValue(int value);声明一个槽需要使用关键字slots,一个槽可以是private、public或者protected类型,槽也可以声明为虚函数,可以像调用普通函数那样调用槽。(4) 将自定义信号与自定义槽进行关联 / 创建Dialog对话框 MyDialog *dlg = new MyDialog(this); / 将对话框中的自定义信号与主界面中的自定义槽函数进行关联 connect(dlg,SIGNAL(dlgReturn(int),this,SLOT(showValue(int); / 显示对话框 this:即本部件,Widget dlg-show();Connect的结构入下:static QMetaObject:Connection connect(const QObject *sender, const char 发送信号的对象,要发送的*signal,const QObject *receiver, const char *member, Qt:ConnectionType 信号, 接受信号的对象, 要执行的槽,= Qt:AutoConnection);表明了关联方式 对于信号和槽,必须使用SIGNAL()和SLOTS()宏,可以将参数转换成const char*类型。 connect()函数的返回值是bool类型,当关联成功时返回ture。 在调用这个函数时,信号和槽只能有类型,不能有变量。例如:SLOT(showValue(int value)是不对的。 对于信号和槽的参数问题,基于原则是信号中的参数类型和槽中的参数类型要相对应,而且信号中的参数可以多于槽中的参数,但不能反过来。使用信号和槽时,应该注意以下几点:5. Qstring类Qstring类提供了一个Unicode字符串。Unicode是一种支持大部分文字系统的国际字符编码标准。QString存储了一串Qchar,而Qchar提供了一个16位的Unicode字符。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!