嵌入式QT图形界面设计考试题_第1页
嵌入式QT图形界面设计考试题_第2页
嵌入式QT图形界面设计考试题_第3页
嵌入式QT图形界面设计考试题_第4页
嵌入式QT图形界面设计考试题_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、真诚为您提供优质参考资料,若有不当之处,请指正。11级3G嵌入式班:吕中旭 嵌入式QT图形界面设计考试题1、 设计一个类似于QQ登陆界面的程序,要求1) 有用户名输入框、密码输入框2) 有确认按钮、退出按钮3) 当点击确认按钮时,检查密码和用户名是否匹配默认密码和用户名(默认Passwd:123456,UserName:ct),如果匹配登陆界面退出,否则弹出警告框。4) 当点击退出按钮时,退出登陆界面。程序代码:“CSS2.cpp”#ifndef CSS2_H#define CSS2_H#include#include#include#include#include#include#inclu

2、de#include class LOGIN:public QDialog /定义一个LOGIN(登录)的类 Q_OBJECTpublic: LOGIN(QWidget *parent =0); /公共成员 QWidget指针parent默认值为0private: /私有成员 QLabel * userlabel; /用户名标签 QLabel *passwordlabel; /用户密码标签 QLineEdit * userlineedit; /用户名文本输入框 QLineEdit * passwordlineedit; /用户密码文本输入框 QPushButton * loginbutton;

3、 /定义登录按钮 QPushButton * quitbutton; /定义退出按钮 QVBoxLayout * VLlayout; /定义垂直布局管理器 QGridLayout * GLlayout; /定义网状布局管理器 QHBoxLayout * HLlayout; /定义水平布局管理器private slots: /定义私有槽 void login(); /引用用户登陆函数 void quit(); /引用用户退出函数;#endif / CSS2_H /用户登录函数css2.cpp#include css2.h LOGIN:LOGIN(QWidget *parent):QDialog(

4、parent)/将parent的参数传递过去 userlabel = new QLabel(username:); passwordlabel = new QLabel(passwd:); userlineedit = new QLineEdit; passwordlineedit = new QLineEdit; loginbutton = new QPushButton(login); quitbutton = new QPushButton(quit); VLlayout = new QVBoxLayout(this); GLlayout = new QGridLayout; HLlay

5、out = new QHBoxLayout; GLlayout-addWidget(userlabel,0,0); GLlayout-addWidget(userlineedit,0,1); GLlayout-addWidget(passwordlabel,1,0); GLlayout-addWidget(passwordlineedit,1,1); HLlayout -addWidget(loginbutton); HLlayout -addWidget(quitbutton); VLlayout -addLayout(GLlayout); VLlayout -addLayout(HLlay

6、out); setLayout(VLlayout); connect(loginbutton,SIGNAL(clicked(),this,SLOT(login(); connect(quitbutton,SIGNAL(clicked(),this,SLOT(quit();void LOGIN:login()/用户登录 if(userlineedit-text()!=ct)|(passwordlineedit-text()!=123456) QMessageBox:warning(this,warning, username or passwd is wrong!); else this-clo

7、se();void LOGIN:quit()/用户退出 QMessageBox:StandardButton mybutton; mybutton =QMessageBox:warning(this,warning,are you sure to quit the login?,QMessageBox:Yes|QMessageBox:No); if(mybutton=QMessageBox:Yes) this-close(); /主函数main.cpp#include#includecss2.hint main(int argc,char *argv) QApplication app(arg

8、c,argv); LOGIN logining; logining.show(); /显示登陆界面 return app.exec();效果截图:登陆界面: 用户名正确,密码不正确: 警告错误: 密码和用户都正确: 2、 设计实现一个简单的计算器程序,要求1) 能进行简单的+、-、*、/、1/x、sqart(开方)按键计算。2) 能进行退格、清零按键操作3) 能正确的显示结果,精度为0.01程序代码:BUTTON.cpp#ifndef BUTTON_H#define BUTTON_H#include class Button:public QToolButton /定义工具按钮类 Q_OBJE

9、CT public: Button(const QString &text,QWidget * parent=0); QSize sizeHint() const; ;#endif / BUTTON_H#ifndef CALCULATOR_H /定义计算器#define CALCULATOR_H#include#include /QT_BEGIN_HEADERclass QLineEdit;QT_END_NAMESPACEclass Button;class Calculaor:public QDialog Q_OBJECT public: Calculaor(QWidget * parent

10、=0); private slots: void digitClicked();/数字按键0-9 void unaryOperatorClicked();/平方,求根号,倒数 void additiveOperatorClicked();/“+”,“-” void multiplicativeOperatorClicked();/“*”,“/” void equalClicked();/“=” void pointClicked();/“” void changeSignClicked();/“+ / ” void backspaceClicked();/“Backpase” void cle

11、ar();/“Clear” void clearAll();/“Clear All” void clearMemory();/“MC” void readMemory();/“MR” void setMemory();/“MS” void addToMemory();/“M +” private: Button * createButton(const QString &text,const char * membur); /生成按键函数 void abortOperation();/运算错误 bool calculate(double rightOperate,const QString &

12、pendingOperator); /运算函数(加减乘除) double sumInMemory; /MC,MR,MS,M+ 值保存 double sumSoFar; /加法和减法运算值保存 double factorSoFar; /乘法和除法运算值保存 QString pendingAdditiveOpertaor; /加法和减法运算值号保存QString pendingMultiplicativeOperator; /乘法和除法运算值号保存 bool waitingForOperand; /表示状态 QLineEdit * display;/数字框显示 enumNumDigitButton

13、s=10; Button *digitButtonsNumDigitButtons;/数字按键0-9;#endif / CALCULATOR_H/定义按钮函数#include#includebutton.hButton:Button(const QString &text,QWidget*parent):QToolButton(parent) setSizePolicy(QSizePolicy:Expanding,QSizePolicy:Preferred); setText(text);QSize Button:sizeHint()const QSize size=QToolButton:s

14、izeHint(); size.rheight()+=20; size.rwidth()=qMax(size.width(),size.height(); return size;#include #include #include button.h#include calculator.hCalculaor:Calculaor(QWidget *parent):QDialog(parent) sumInMemory=0.0; sumSoFar=0.0; factorSoFar=0.0; waitingForOperand=true; display=new QLineEdit(0); dis

15、play-setReadOnly(true); display-setAlignment(Qt:AlignRight); display-setMaxLength(15); QFont font=display-font(); font.setPointSize(font.pointSize()+8); display-setFont(font); for(int i=0;isetSizeConstraint(QLayout:SetFixedSize); mainLayout-addWidget(display,0,0,1,6); mainLayout-addWidget(backspaceB

16、utton,1,0,1,2); mainLayout-addWidget(clearButton,1,2,1,2); mainLayout-addWidget(clearAllButton,1,4,1,2); mainLayout-addWidget(clearMemoryButton,2,0); mainLayout-addWidget(readMemoryButton,3,0); mainLayout-addWidget(setMemoryButton,4,0); mainLayout-addWidget(addToMemoryButton,5,0); for(int i=1;iaddWi

17、dget(digitButtonsi,row,column); mainLayout-addWidget(digitButtons0,5,1); mainLayout-addWidget(pointButton,5,2); mainLayout-addWidget(changeSignButton,5,3); mainLayout-addWidget(divisionButton,2,4); mainLayout-addWidget(timesButton,3,4); mainLayout-addWidget(minusButton,4,4); mainLayout-addWidget(plu

18、sButton,5,4); mainLayout-addWidget(squareRootButton,2,5); mainLayout-addWidget(powerButton,3,5); mainLayout-addWidget(reciprocalButton,4,5); mainLayout-addWidget(equalButton,5,5); setLayout(mainLayout); setWindowTitle(tr(Calculator);Button *Calculaor:createButton(const QString &text,const char * mem

19、ber) Button *button=new Button(text); connect(button,SIGNAL(clicked(),this,member); return button;void Calculaor:digitClicked() /数字按键函数 Button *clickedButton = qobject_cast(sender(); int digitValue=clickedButton-text().toInt(); if(display-text()=0&digitValue=0.0)/清零 return; if(waitingForOperand) dis

20、play-clear(); waitingForOperand=false; display-setText(display-text()+QString:number(digitValue);void Calculaor:unaryOperatorClicked() /求平方,求根号,倒数的函数 Button *clickedButton = qobject_cast(sender(); QString clickedOperator = clickedButton - text(); double operand =display -text().toDouble(); double re

21、sult = 0.0; if(clickedOperator=Sqrt) if(operandsetText(QString:number(result); waitingForOperand=true;void Calculaor:additiveOperatorClicked() /加“+”减“-”操作函数 Button *clickedButton = qobject_cast(sender(); QString clickedOperator = clickedButton - text(); double operand =display -text().toDouble(); if

22、(!pendingMultiplicativeOperator.isEmpty() if(!calculate(operand,pendingMultiplicativeOperator) abortOperation(); return; display -setText(QString:number(factorSoFar); operand=factorSoFar; factorSoFar=0.0; pendingMultiplicativeOperator.clear(); if(!pendingMultiplicativeOperator.isEmpty() if(!calculat

23、e(operand,pendingMultiplicativeOperator) abortOperation(); return; display -setText(QString:number(sumSoFar); else sumSoFar=operand; pendingAdditiveOpertaor=clickedOperator; waitingForOperand=true; qDebug() look;void Calculaor:multiplicativeOperatorClicked()/乘“*”除“/”函数 Button *clickedButton = qobjec

24、t_cast(sender(); QString clickedOperator = clickedButton - text(); double operand =display -text().toDouble(); if(!pendingMultiplicativeOperator.isEmpty() if(!calculate(operand,pendingMultiplicativeOperator) abortOperation(); return; display -setText(QString:number(factorSoFar); else factorSoFar=ope

25、rand; pendingMultiplicativeOperator=clickedOperator; waitingForOperand=true;void Calculaor:equalClicked() /等于“=” 操作函数 double operand=display-text().toDouble(); if(!pendingMultiplicativeOperator.isEmpty() qDebug() *; if(!calculate(operand,pendingMultiplicativeOperator) abortOperation(); return; opera

26、nd=factorSoFar; factorSoFar=0.0; pendingMultiplicativeOperator.clear(); if(!pendingAdditiveOpertaor.isEmpty() qDebug() setText(QString:number(sumSoFar); sumSoFar=0.0; waitingForOperand=true;void Calculaor:pointClicked() /点“.” 操作函数 if(waitingForOperand) display-setText(0); if(! display-text().contain

27、s(.) display-setText(display-text()+tr(.); waitingForOperand=false;void Calculaor:changeSignClicked()/“加”“减”变换 操作函数 QString text=display-text(); double value=text.toDouble(); if(value0.0) text.prepend(tr(-); else if(valuesetText(text);void Calculaor:backspaceClicked()/退格函数 if(waitingForOperand) retu

28、rn; QString text =display-text(); text.chop(1); if(text.isEmpty() text=0; waitingForOperand=true; display-setText(text);void Calculaor:abortOperation()/终止操作函数 clearAll(); display-setText(tr(#);bool Calculaor:calculate(double rightOperand,const QString /定义布尔函数 &pendingOperator) if(pendingOperator=tr(+) sumSoFar += rightOperand; else if(pendingOperator=tr(-) sumSoFar -= rightOperand; else if(pendingOperator=tr(327) factorSoFar *= right

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论