




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
四天学好Qt4/ 第一天 / QT 要学好Qt必须知道Qt的用途 用图形界面的方式实现输入和输出。 学习方法 主要目的:所有常用组件的输入和输出 次要目的:学会常用组件界面的控制 要求:(可根据资料)熟练习使用常用组件 频繁使用的属性(成员)的设置方法要记忆 一、第一个程序 #include qapplication.h /#include #include qwidget.h int main(int argc,char *argv) QApplication app(argc,argv); QWidget *w=new QWidget; w-show(); return app.exec(); 1. QApplication 用于管理图形界面的程序,管理一个程序的资源。 有两个主要函数 1)构造函数 QApplication(int &argc,char *argv); 是把主函数的两个参数传给qt程序。即把程序的控制权交给了qt 2)static int exec(); 函数内有一个循环语句,用于不断的接收用户和系统的事件(信号、指令等) 把接收到的事件传送适当的窗口.当循环接收到一个退出指令时,退出循环。 2. QWidget 是所有窗口类的基类,用于实现窗口 常用的成员变量(属性) 1) autoFillBackground: bool 是否自动填充背景(了解) 操作函数:bool autoFillBackground() const; /获取属性的值 void setAutoFillBackground(bool enabled); /设置属性的值 2) cursor:QCursor 窗口部件的鼠标外形(了解) 操作函数:QCursor cursor() const; /获取属性 void setCursor(const QCursor &cursor); /设置 例: QCursor cursor; cursor.CursorShape(); /获取外形 cursor.setShape(Qt:SizeBDiagCursor); w.setCursor(cursor); *3) enabled: bool 窗口部件是否可用 (重点) 操作函数: bool isEnabled() const; /获取属性值 void setEnabled(bool enabled); /设置 *4) focus: bool 窗口部件焦点 操作函数:void setFocus(); /设置部件得到焦点(重点) void clearFocus(); /清除焦点 *5) font: QFont字体(重点) 操作函数:const QFont &font() const; /获取字体 void setFont(const QFont &font); /设置字体 例: QFont font; font.underline(); w-setFont(font); 6)fullScreen: bool 是否全屏(了解) 操作函数:bool isFullScreen(); /获取 void setWindowState(Qt:WindowStates state); *7) geometry: QRect 相对于父窗口大小(重点) 操作函数:const QRect &geometry(); /获取窗口大小 void setGeometry(int x,int y,int w,int h); void setGeometry(QRect &rect); 例: w-setGeometry(10,10,600,300); 8) pos: QPoint 相对而言于父窗口的顶点坐标 操作函数:QPoint pos(); /获取x,y void move(int x,int y); /设置 void move(QPoint &pos); *9) visible: bool 是否可见(重点) 操作函数:bool isVisible(); /获取 void setVisible(bool visible); /设置 10)windowIcon: QIcon 窗口图标 操作函数:QIcon windowIcon(); void setWindowIcon(QIcon &icon); 11)windowIconText:QString 窗口图标显示文件 QString windowIconText(); void setWindowIconText(QString &str); 12)windowTitle:QString 窗口标题 QString windowTitle(); void setWindowTitle(QString &str); 常用的成员函数(函数或槽) * bool close(); /关闭窗口(槽) void hide(); /隐藏窗口(槽); void repaint();/重画窗口 * void show(); /显示窗口 * void showFullScreen(); /全屏显示(常用) void showMaximized(); /最大化显示 void showMinimized(); /最小化显示 void showNormal(); /正常显示 void update(); /更新窗口 /- 二、自定义窗口类 ?如果在一个窗口内显示按钮?如何处理? 把按钮等内嵌到窗口内。QWidget是所有窗口类的基类。写代码写不进去?继承QWidget类,然后在派生类中写 QWidget类 QDialog类 对话框类 继承自QWidget类 void setModal(bool modal); /设置模态 int exec(); /显示对话框 当对话框打开后,程序不再向下执行,就是模态显示。直到对话框被关闭 QMainWindow类 主窗口类, 继承自QWidget类 包含菜单条、工具条、状态条等 3.QObject类 是所有类的基类 包含了一个重要函数 connect ,用来连接信号和槽 bool connect(发射器指针,SIGNAL(信号名称),接收器指针,SLOT(要连接的槽); SIGNAL 是一个宏,用来指定信号 SLOT 是用来指定槽 按钮的信号 clicked() /点击信号 pressed() /按下信号 released() /抬起信号 槽 在派生类定义的函数, 必须private slots:下声明 槽的参数必须和信号保持一致 /*默写* /frmfirst.h文件 #ifndef FRMFIRST_H #define FRMFIRST_H #include #include #include #include #include class QFrmFirst:public QWidget Q_OBJECT /是一个宏 如果需要使用信号和槽,则必须包含这个宏,写在类结构的最开始部分 private: QLabel *inputLb; /QLabel 标签类,定义内嵌指针类型成员 QLineEdit *inputEt; /文本编辑框 QPushButton *okBtn; /普通按钮 QToolButton *exitBtn;/工具按钮 public: QFrmFirst(QWidget *parent=NULL); QFrmFirst(); private slots: /private slots 用于定义下面的函数是槽 槽也是一个函数,是能连接信号的函数 void on_okBtn_clicked(); void on_exitBtn_clicked(); ; #endif /frmfirst.cpp文件 #include frmfirst.h QFrmFirst:QFrmFirst(QWidget *parent):QWidget(parent) inputLb=new QLabel(name:,this); /Lb 代表QLabel的缩写 inputLb-setGeometry(10,10,80,25); inputEt=new QLineEdit(this); /Et 代表QLineEdit的缩写 inputEt-setGeometry(100,10,120,25); okBtn =new QPushButton(this); /Btn 代表Button的缩写 okBtn-setGeometry(10,40,80,25); okBtn-setText(ok); exitBtn =new QToolButton(this); exitBtn-setGeometry(120,40,25,25); exitBtn-setText(q); /把信号和槽建立链接 connect(okBtn,SIGNAL(clicked(),this,SLOT(on_okBtn_clicked() ); connect(exitBtn,SIGNAL(clicked(),this,SLOT(on_exitBtn_clicked() ); QFrmFirst:QFrmFirst() delete inputLb; delete inputEt; delete okBtn; delete exitBtn; /函数的起名 on_组件名_信号名 void QFrmFirst:on_okBtn_clicked() inputEt-setText(aaaaaaa); /setText用来设置编辑框内的文字 void QFrmFirst:on_exitBtn_clicked() this-close(); /关闭 /test.cpp文件 #include qapplication.h #include frmfirst.h int main(int argc,char *argv) QApplication app(argc,argv); QFrmFirst *w=new QFrmFirst; w-show(); return app.exec(); 三、输入与输出 设置窗口的最大值和最小值 this-setMaximumSize(500,300); /窗口最大宽、高 this-setMinimumSize(500,300); /窗口最小宽、高 *重点,必须掌握输入和输出*1. 输入与输出 输出:即将内存中的数据写入到组件,通过组件显示在窗口中 void setText(QString str); /将文件写入到组件 void setValue(int val); /将数值写入到组件 如果将文字存入到组件内,需要转换为UNCODE 输入:即从组件内获取数据,并写入到内存中 QString text(); /获取文本 int value (); /获取数值 从组件将数据写入内存,需要转换为GBK 2. QTextCodec类,用于转换字符集 字符集:在编辑环境或内存中,是GBK字符集 在所有的Qt组件内和类内,是UNCODE字符集 GBK 每一个字母一个字节,一个汉字两字节 UNCODE 每一个字母或汉字是两个字节 在QTextCodec类内有一个静态函数 static QTextCodec *codecForLocale(); 在QTextCodec类内有两个转换函数 1)QByteArray fromUnicode(const QString &str);/将str内的数据转换为GBK格式 QByteArray是字节数组,在这个字节数组类内有一个函数 char * data();/获取字符串地址 2)QString toUnicode(char *chars); /将内存的数据转换为UNCODE 3. QString类,字符串类,函数 将字符串转换为数值型 double toDouble ( bool * ok = 0 ) const /把字符串转换为双精度 float toFloat ( bool * ok = 0 ) const int toInt ( bool * ok = 0, int base = 10 ) const long toLong ( bool * ok = 0, int base = 10 ) const short toShort ( bool * ok = 0, int base = 10 ) const uint toUInt ( bool * ok = 0, int base = 10 ) const ulong toULong ( bool * ok = 0, int base = 10 ) const ushort toUShort ( bool * ok = 0, int base = 10 ) const 将种类型按格式形成字符串 QString & sprintf ( const char * cformat, va_list ap ) 1)数字不需要转换为GBK,直接通过函数获取 int z=textEt-text().toInt(); qDebug(z=%d,z); /qDebug调试,在QDebug类内 2)从组件获取文件,需要转换为GBK char *p=code-fromUnicode(textEt-text().data(); qDebug(p=%s,p); 3)将字汉字转换为UNCODE输出到组件 char str256=汉字; textEt-setText(code-toUnicode(str); 4)将各种数按格式输出,不需要转换 char buf256=汉字; int a=23,b=54; double f=34.333; QString str; str.sprintf(%s,a=%d,b=%d,f=%lf,buf,a,b,f); textEt-setText(str); 5)把数据从一个组件写入到另一个组件,不需转换 QString str=textLb-text(); textEt-setText(str);/ 第二天 /四、常用类1. QTime 时间类 QTime ( int h, int m, int s = 0, int ms = 0 ) /时 分 秒 毫秒 int hour () const /获取时 int minute () const /获取分 int second () const /获取秒 bool isNull () const /判断是否填写数据 bool setHMS ( int h, int m, int s, int ms = 0 ) /设置时分秒 QString toString ( const QString & format ) const /按格式形成字符串 hh:mm:ss.zzz QTime addSecs ( int s ) const 例: QTime t1(14,39,20); QString str; QTime t2=t1.addSecs(5); str=t2.toString(hh:mm-ss); textEt-setText(str); 2. QDate 日期类 QDate ( int y, int m, int d ) /年月日 int year () const /年 int month () const /月 int day () const /日 void getDate ( int * year, int * month, int * day )/获取年月日 bool setDate ( int year, int month, int day ) /设置年月日 int dayOfWeek () const /星期几 int dayOfYear () const /这一年的第几天 int daysInMonth () const /这个月是多少天 int daysInYear () const /这一年是多少天 QString toString ( const QString & format ) const yyyy-MM-dd bool isNull () const QDate addDays ( int ndays ) const QDate addMonths ( int nmonths ) const QDate addYears ( int nyears ) const3. QFont 字体类 QFont ( const QString & family, int pointSize = -1, int weight = -1, bool italic = false ) void setBold ( bool enable ) /粗体 void setFamily ( const QString & family )/字体名 void setItalic ( bool enable ) /斜体 void setPixelSize ( int pixelSize ) /Pixel象素 按象素设大小 void setPointSize ( int pointSize ) /Point点 例: QFont ft=txtEt-font(); ft.setPixelSize(6); txtEt-setFont(ft); 4. Qpixmap 象素图类 /pix象素 map 图 象素图 /bit位 map 图 bitmap 位图 bmp格式 QPixmap ( const QString & fileName, const char * format = 0, Qt:ImageConversionFlags flags = Qt:AutoColor ) void fill ( const QColor & color = Qt:white ) bool load ( const QString & fileName, const char * format = 0, Qt:ImageConversionFlags flags = Qt:AutoColor ) bool save ( const QString & fileName, const char * format = 0, int quality = -1 ) const QPixmap scaled ( int width, int height, Qt:AspectRatioMode aspectRatioMode = Qt:IgnoreAspectRatio, Qt:TransformationMode transformMode = Qt:FastTransformation ) const QPixmap scaled ( const QSize & size, Qt:AspectRatioMode aspectRatioMode = Qt:IgnoreAspectRatio, Qt:TransformationMode transformMode = Qt:FastTransformation ) const QImage toImage () const 例 给标签加图片 QPixmap pmap(./123.png); QPixmap pmap1=pmap.scaled(textLb-size(); textLb-setPixmap(pmap1); 例:给窗口加背景 this-setAutoFillBackground(true); /自动填充背景 /* QPixmap pmap(./aaa.png); /象素图类 QBrush brush(pmap.scaled(this-size(); /笔刷类对象 QPalette pal=this-palette(); /调色板 pal.setBrush(QPalette:Window,brush); */ QPalette pal=this-palette(); pal.setBrush(QPalette:Window,QBrush(QPixmap(./aaa.png).scaled(this-size(); this-setPalette(pal); 五、常用组件1. QLineEdit和QLabel组件 成员变量: alignment : Qt:Alignment /对齐方式 操作函数 Qt:Alignment alignment () const void setAlignment ( Qt:Alignment flag ) 例:textEt-setAlignment(Qt:AlignHCenter); pixmap : QPixmap /象素图 操作函数 const QPixmap * pixmap () const void setPixmap ( const QPixmap & ) text : QString /所显示的文本 操作函数 QString text () const void setText ( const QString & ) textFormat : Qt:TextFormat /文本格式 操作函数 Qt:TextFormat textFormat () const void setTextFormat ( Qt:TextFormat ) 参数可选项 Qt:RichText 富文本,某个字可以不同色彩,不同大小,不同字体类型 Qt:PlainText 多行文本 readOnly : bool /只读 操作函数 bool isReadOnly () const void setReadOnly ( bool ) 例:bool a=textEt-isReadOnly(); textEt-setReadOnly(!a); cursorPosition : int /光标位置 操作函数 int cursorPosition () const void setCursorPosition ( int ) inputMask : QString /输入时的掩码 操作函数 QString inputMask () const void setInputMask ( const QString & inputMask ) 例:textEt-setInputMask(0000-00-00); textEt-setInputMask(setEchoMode(QLineEdit:Password); textEt-setEchoMode(QLineEdit:Normal); 信号 void editingFinished () /编辑完毕 void returnPressed () /回车键 void selectionChanged () /选择发生改变 void textChanged ( const QString & text ) /文字发生改变 void textEdited ( const QString & text /文字编辑完毕 2. QPushButton和QToolButton组件 成员变量 flat : bool /是否平滑 操作函数 bool isFlat () const void setFlat ( bool ) 例:exitBtn-setFlat(true); arrowType : Qt:ArrowType /图片位置 操作函数 Qt:ArrowType arrowType () const void setArrowType ( Qt:ArrowType type ) 参数选项 Qt:NoArrow默认 Qt:UpArrow靠上 Qt:DownArrow靠下 Qt:LeftArrow靠左 Qt:RightArrow靠右 成员函数 QPushButton ( QWidget * parent = 0 ) QPushButton ( const QString & text, QWidget * parent = 0 ) QPushButton ( const QIcon & icon, const QString & text, QWidget * parent = 0 ) 信号 released() pressed() clicked() 例: static int i=0; if (i%2=0) QIcon icon(play.PNG); exitBtn-setIcon(icon); else QIcon icon(./pause.PNG); exitBtn-setIcon(icon); i+; 作业:把所有示例练熟 所有的类内都是Uncode 编辑窗口和内存中都是GBK code-toUnicode(kajsdf);/变成Uncode code-fromUnicode(str).date();/变成GBK 五、重要组件1. QRadioButton 单选按钮 QCheckBox 复选按钮 例:布局 char *list4= A, B, C, 男 ; int i; for(i=0;itoUnicode(listi),this); sexRBtni-setGeometry(10,40+i*20,80,25); char *Checklist4= 仙傽, 纸牌, 地主, 扫雷 ; for(i=0;itoUnicode(Checklisti),this); styleCBxi-setGeometry(100,40+i*20,80,25); 常用属性: checked: bool /是否被选中 操作函数 bool isChecked() void setChecked(bool checked); 例1: sexRBtn1-setChecked(true); sexRBtn2-setChecked(true); styleCBx0-setChecked(!styleCBx0-isChecked(); styleCBx1-setChecked(!styleCBx1-isChecked(); styleCBx2-setChecked(true); styleCBx3-setChecked(true); 例2 if (sexRBtn1-isChecked() qDebug(/-1); else if (sexRBtn2-isChecked() qDebug(/-2); 常用函数 QRadioButton ( QWidget * parent = 0 ) QRadioButton ( const QString & text, QWidget * parent = 0 ) QCheckBox ( QWidget * parent = 0 ) QCheckBox ( const QString & text, QWidget * parent = 0 ) 信号 released() pressed() clicked() 例: connect(sexRBtn1,SIGNAL(clicked(),this,SLOT(on_aBtn_released(); connect(sexRBtn2,SIGNAL(clicked(),this,SLOT(on_aBtn_released(); void QHead:on_aBtn_released() if (sexRBtn1-isChecked() qDebug(/-1); else if (sexRBtn2-isChecked() qDebug(/-2); 2.输入输出组件 1)QDateEdit 日期编辑框 QTimeEdit 时间编辑框 QDateTimeEdit 日期时间编辑框 属性: date : QDate 操作函数:QDate date () const void setDate ( const QDate & date ) 例: dateEt=new QDateEdit(this); dateEt-setGeometry(10,10,120,25); dateEt-setDisplayFormat(yyyy-MM-dd); /设置显示格式 QDate dt1=dateEt-date(); int y=dt1-year(); dt1.setDate(2012,12,21); dateEt-setDate(dt1); 2)QSpinBox 微调编辑框 QDoubleSpinBox 属性: maximum : int /最大最小值 minimum : int 操作函数 void setMaximum ( int max ) void setMinimum ( int min ) 例: valSbx= new QSpinBox(this); valSbx-setGeometry(10,40,120,25); valSbx-setMaximum(200); valSbx-setMinimum(150); singleStep : int /步长 操作函数void setSingleStep ( int val ) 例:valSbx-setSingleStep(2); value : int /值,输入和输出要操作的数 操作函数int value () const void setValue ( int val ) 例:qDebug(%dn,valSbx-valu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 突发公共卫生事件护理
- 智能制造印刷技术指南
- 化学工业废物处理规定
- 物业管理遗失物品处理方案
- 冒险卡通动漫报告
- 2025新疆兵团粮安储备粮管理有限责任公司招聘19人笔试含答案
- 2025西安光环电子科技有限公司招聘(3-5人)笔试含答案
- 2025年铁岭银行见习生招聘50人笔试含答案
- 企业规章制度的协同与协作
- 2025年事业单位工勤技能-福建-福建计算机信息处理员三级高级历年参考题库含答案解析
- 废水管理制度
- 汽车销售退货及换车流程
- 幼儿园获奖公开课:中班数学《2和3的组成和分解》课件
- 数字化环境下航空装备研制质量管理的思考
- 学习安全知识课件
- 林业行政执法培训课件
- 人教版九年级物理上册全书课后练习答案
- 广东省中山市2025年中考模拟数学试卷五套附参考答案
- 【MOOC】《电路实验》(东南大学)章节中国大学慕课答案
- 冻品知识培训课件
- 伐木安全课件
评论
0/150
提交评论