嵌入式QT图形界面设计考试题

上传人:xt****7 文档编号:144362101 上传时间:2022-08-27 格式:DOC 页数:15 大小:298KB
返回 下载 相关 举报
嵌入式QT图形界面设计考试题_第1页
第1页 / 共15页
嵌入式QT图形界面设计考试题_第2页
第2页 / 共15页
嵌入式QT图形界面设计考试题_第3页
第3页 / 共15页
点击查看更多>>
资源描述
11级3G嵌入式班:吕中旭 嵌入式QT图形界面设计考试题一、 设计一个类似于QQ登陆界面的程序,要求1) 有用户名输入框、密码输入框2) 有确认按钮、退出按钮3) 当点击确认按钮时,检查密码和用户名是否匹配默认密码和用户名(默认Passwd:123456,UserName:ct),如果匹配登陆界面退出,否则弹出警告框。4) 当点击退出按钮时,退出登陆界面。程序代码:“CSS2.cpp”#ifndef CSS2_H#define CSS2_H#include#include#include#include#include#include#include#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; /定义登录按钮 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(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; HLlayout = 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(HLlayout); 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-close();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(argc,argv); LOGIN logining; logining.show(); /显示登陆界面 return app.exec();效果截图:登陆界面: 用户名正确,密码不正确: 警告错误: 密码和用户都正确: 二、 设计实现一个简单的计算器程序,要求1) 能进行简单的+、-、*、/、1/x、sqart(开方)按键计算。2) 能进行退格、清零按键操作3) 能正确的显示结果,精度为0.01程序代码:BUTTON.cpp#ifndef BUTTON_H#define BUTTON_H#include class Button:public QToolButton /定义工具按钮类 Q_OBJECT 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=0); private slots: void digitClicked();/数字按键0-9 void unaryOperatorClicked();/平方,求根号,倒数 void additiveOperatorClicked();/“+”,“-” void multiplicativeOperatorClicked();/“*”,“/” void equalClicked();/“=” void pointClicked();/“” void changeSignClicked();/“+ / ” void backspaceClicked();/“Backpase” void clear();/“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 &pendingOperator); /运算函数(加减乘除) double sumInMemory; /MC,MR,MS,M+ 值保存 double sumSoFar; /加法和减法运算值保存 double factorSoFar; /乘法和除法运算值保存 QString pendingAdditiveOpertaor; /加法和减法运算值号保存QString pendingMultiplicativeOperator; /乘法和除法运算值号保存 bool waitingForOperand; /表示状态 QLineEdit * display;/数字框显示 enumNumDigitButtons=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:sizeHint(); 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); display-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(backspaceButton,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;iaddWidget(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(plusButton,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 * member) 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) display-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 result = 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(!pendingMultiplicativeOperator.isEmpty() if(!calculate(operand,pendingMultiplicativeOperator) abortOperation(); return; display -setText(QString:number(factorSoFar); operand=factorSoFar; factorSoFar=0.0; pendingMultiplicativeOperator.clear(); if(!pendingMultiplicativeOperator.isEmpty() if(!calculate(operand,pendingMultiplicativeOperator) abortOperation(); return; display -setText(QString:number(sumSoFar); else sumSoFar=operand; pendingAdditiveOpertaor=clickedOperator; waitingForOperand=true; qDebug() look;void Calculaor:multiplicativeOperatorClicked()/乘“*”除“/”函数 Button *clickedButton = qobject_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=operand; pendingMultiplicativeOperator=clickedOperator; waitingForOperand=true;void Calculaor:equalClicked() /等于“=” 操作函数 double operand=display-text().toDouble(); if(!pendingMultiplicativeOperator.isEmpty() qDebug() *; if(!calculate(operand,pendingMultiplicativeOperator) abortOperation(); return; operand=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().contains(.) 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) return; 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 *= rightOperand; else if(pendingOperator=tr(367) if(rightOperand=0.0) return false; factorSoFar /= rightOperand; return true;void Calculaor:clear()/清零操作函数 if(waitingForOperand) return; display-setText(0); waitingForOperand=true;void Calculaor:clearAll()/“清除所有”操作函数 sumSoFar=0.0; factorSoFar=0.0; pendingAdditiveOpertaor.clear(); pendingMultiplicativeOperator.clear(); display-setText(0); waitingForOperand=true;void Calculaor:clearMemory()/清除存储器的操作函数 sumInMemory=0.0;void Calculaor:readMemory()/读取存储器的操作函数 display-setText(QString:number(sumInMemory); waitingForOperand=true;void Calculaor:setMemory() /设置存储器的操作函数 equalClicked(); sumInMemory=display-text().toDouble();void Calculaor:addToMemory()/添加存储器的操作函数 equalClicked(); sumInMemory+=display-text().toDouble();#include#includecalculator.h#includebutton.hint main(int argc,char *argv) QApplication app(argc,argv); Calculaor calc; calc.show(); return app.exec();效果截图:初始化登陆界面: 减数: 被减数: 差: 乘数: 乘数2: 积:
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


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

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


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