当前位置: 首页 > news >正文

app开发与网站开发大学生创业服务网站建设方案

app开发与网站开发,大学生创业服务网站建设方案,wordpress wp-comments-post.php,php网站开发笔试题引言 有时候程序中的控件的个数是无法预测的#xff0c;当程序启动时#xff0c;根据解析的数据动态的创建n行m列的控件#xff0c;并为其布局。下面记录一下动态创建控件#xff0c;并布局。 运行效果 示例 此示例主要是从json配置文件中读取参数#xff0c;然后根据参…引言 有时候程序中的控件的个数是无法预测的当程序启动时根据解析的数据动态的创建n行m列的控件并为其布局。下面记录一下动态创建控件并布局。 运行效果 示例 此示例主要是从json配置文件中读取参数然后根据参数的个数创建姐买你上的控件并布局。 下面是具体的实现代码 main.cpp #include studentscoredialog.h#include QApplicationint main(int argc, char *argv[]) {QApplication a(argc, argv);StudentScoreDialog w;w.show();return a.exec(); }studentscoredialog.h #ifndef STUDENTSCOREDIALOG_H #define STUDENTSCOREDIALOG_H/********************************************功能描述1.根据解析的数据动态创建按钮并布局,2.数据太多超过显示的窗口的大小时自动添加滚动条。 ********************************************/#include QDialog//具体学生成绩结构 typedef struct studentInfo {QString name;//学生姓名qreal score;//学生成绩 }ST_STUDENTINFO; typedef ST_STUDENTINFO stuStudent; typedef struct scoreInfo {QString strClass;//班级qreal arvgScore;//平均成绩qreal totalScore;//总成绩uint8_t number;//人数QListstuStudent students;//学生成绩列表 }ST_SCOREINFO; typedef ST_SCOREINFO stuScore;class QVBoxLayout; QT_BEGIN_NAMESPACE namespace Ui { class StudentScoreDialog; } QT_END_NAMESPACEclass StudentScoreDialog : public QDialog {Q_OBJECTpublic:StudentScoreDialog(QWidget *parent nullptr);~StudentScoreDialog(); protected:QString getExePath();//获取可执行文件的路径void readStudentJsonFile();//读取json文件void parseJsonContent(QByteArray array);//解析json文件内容void createCtrl();//创建控件void createEveryClassScore(stuScore score,QVBoxLayout *vLayout);//创建每一个班级的成绩情况 private:Ui::StudentScoreDialog *ui;QListstuScore m_stuScoreList;//保存从json文件读取的变量值 }; #endif // STUDENTSCOREDIALOG_Hstudentscoredialog.cpp #include studentscoredialog.h #include ui_studentscoredialog.h #include QCoreApplication #include QJsonDocument #include QJsonObject #include QJsonArray #include QJsonParseError #include QFile #include QGroupBox #include QHBoxLayout #include QVBoxLayout #include QLabel #include QLineEdit #include QDebugStudentScoreDialog::StudentScoreDialog(QWidget *parent): QDialog(parent), ui(new Ui::StudentScoreDialog) {ui-setupUi(this);setWindowFlags(Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint);readStudentJsonFile();createCtrl(); }StudentScoreDialog::~StudentScoreDialog() {delete ui; }QString StudentScoreDialog::getExePath() {return QCoreApplication::applicationDirPath(); }void StudentScoreDialog::readStudentJsonFile() {QString strPath getExePath() /students.json;QFile file(strPath);if (file.open(QIODevice::ReadOnly)) {QByteArray byteArray file.readAll();file.close();parseJsonContent(byteArray);}else {qDebug()QStringLiteral(文件打开失败);} }void StudentScoreDialog::parseJsonContent(QByteArray array) {QJsonParseError parseError;QJsonDocument doc QJsonDocument::fromJson(array,parseError);if (!doc.isEmpty() parseError.error QJsonParseError::NoError) {QJsonObject rootObject doc.object();if (rootObject.value(msg).toString() score) {QJsonArray resultArray rootObject.value(results).toArray();for (int i 0; i resultArray.size(); i) {QJsonObject resultObject resultArray[i].toObject();stuScore tempScore;tempScore.strClass resultObject.value(class).toString();tempScore.arvgScore resultObject.value(averageScore).toDouble();tempScore.totalScore resultObject.value(totalScore).toDouble();tempScore.number resultObject.value(number).toInt();QJsonArray studentArray resultObject.value(students).toArray();for (int j 0; j studentArray.size(); j) {stuStudent tempStudent;QJsonObject studentObject studentArray.at(j).toObject();tempStudent.name studentObject.value(name).toString();tempStudent.score studentObject.value(score).toDouble();tempScore.students.append(tempStudent);}m_stuScoreList.append(tempScore);}}} }void StudentScoreDialog::createCtrl() {QWidget *widget ui-scrollAreaWidgetContents;QVBoxLayout *vLayout new QVBoxLayout(widget);vLayout-setSpacing(5);vLayout-setContentsMargins(5,5,5,5);for (int i 0; i m_stuScoreList.size(); i) {QGroupBox *groupBox new QGroupBox;QVBoxLayout *groupVlayout new QVBoxLayout(groupBox);groupVlayout-setSpacing(5);groupVlayout-setContentsMargins(5,0,5,0);stuScore classScore m_stuScoreList.at(i);createEveryClassScore(classScore,groupVlayout);vLayout-addWidget(groupBox);} }void StudentScoreDialog::createEveryClassScore(stuScore score, QVBoxLayout *vLayout) {QHBoxLayout *hLayout new QHBoxLayout;QLabel *classLabel new QLabel(QStringLiteral(班级));QLineEdit *classEdit new QLineEdit(score.strClass);QLabel *averageLabel new QLabel(QStringLiteral(平均成绩));QLineEdit *averageEdit new QLineEdit(QString::number(score.arvgScore));QLabel *totalLabel new QLabel(QStringLiteral(总成绩));QLineEdit *totalEdit new QLineEdit(QString::number(score.totalScore));QLabel *numberLabel new QLabel(QStringLiteral(人数));QLineEdit *numberEdit new QLineEdit(QString::number(score.number));hLayout-addWidget(classLabel);hLayout-addWidget(classEdit);hLayout-addWidget(averageLabel);hLayout-addWidget(averageEdit);hLayout-addWidget(totalLabel);hLayout-addWidget(totalEdit);hLayout-addWidget(numberLabel);hLayout-addWidget(numberEdit);vLayout-addLayout(hLayout);QHBoxLayout *scoreLayout nullptr;for (int i 0; i score.students.size(); i) {if (i % 4 0) {scoreLayout new QHBoxLayout;scoreLayout-setSpacing(5);scoreLayout-setContentsMargins(0,0,0,0);vLayout-addLayout(scoreLayout);}stuStudent tempStudent score.students[i];QLabel *nameLabel new QLabel(QStringLiteral(姓名));QLineEdit *nameEdit new QLineEdit(tempStudent.name);nameEdit-setFixedWidth(120);QLabel *scoreLabel new QLabel(QStringLiteral(成绩));QLineEdit *scoreEdit new QLineEdit(QString::number(tempStudent.score));scoreEdit-setFixedWidth(50);scoreLayout-addWidget(nameLabel);scoreLayout-addWidget(nameEdit);scoreLayout-addWidget(scoreLabel);scoreLayout-addWidget(scoreEdit);if (i score.students.size() - 1 score.students.size() % 4 ! 0) {scoreLayout-addStretch();}} }ui文件中添加的控件 创建的项目的结构 此项目中读取的配置文件students.json,配置文件的内容如下 students.json {msg:score,results:[{class:二年级一班,averageScore:78,totalScore:936,number:12,students:[{name:李明,score:77},{name:胡书,score:77},{name:扫速度,score:79},{name:山山倒,score:80},{name:阿萨,score:68},{name:维欧,score:77},{name:奇数,score:75},{name:使能,score:78},{name:水浇地,score:69},{name:当数据,score:87},{name:但是,score:76},{name:撒口,score:79}]},{class:二年级二班,averageScore:80,totalScore:960,number:12,students:[{name:蛋黄酥,score:77},{name:随机,score:79},{name:奥斯基,score:80},{name:赛德克,score:78},{name:收到,score:83},{name:卡松,score:77},{name:欧俄,score:86},{name:撒旦,score:78},{name:喀什,score:84},{name:科奥,score:87},{name:杰斯,score:76},{name:欧维,score:83}]}] }整个工程就如上面所示程序启动的时候根据从配置文件中获取的参数来创建控件并布局上面虽使用了栅格布局但设置了姓名和成绩的控件的宽度故而将窗口最大化之后不能很完美的显示控件即成绩和姓名行编辑器没有被拉伸注释掉对姓名和成绩行编辑器的宽度设置后可以最大化窗口同时拉伸控件。
http://www.pierceye.com/news/57826/

相关文章:

  • 什么叫网站建设四网合一服装设计软件有哪些软件
  • 国外字体设计网站如何搭建一个自己上传视频的网站
  • 电商网站开发用什么软件好陶瓷行业网站建设招标书
  • 六安市城市建设档案馆网站北京seo公司有哪些
  • 陕西通达工程建设有限公司网站平台商业模式有哪些
  • vue做网站首页深圳高端网站定制建设
  • 无锡网络公司无锡网站制作wordpress有什么缺点
  • 福建微网站建设价格郴州做网站的
  • 唐山中小企业网站制作公司装修怎么样
  • 漳浦网站设计天元建设集团有限公司成立时间
  • 招聘 网站开发wordpress调用文章描述
  • 网站开发规划书scrm和crm如何配合
  • cnzz 网站域名怎么填宣传页在线设计软件
  • 沈阳模板建站固镇做网站多少钱
  • 三桥做网站国内外包网站
  • 百度权重查询爱站网做药的文献一般在哪些网站查找
  • 电子商务网站和普通网站的区别有用cc域名做网站的
  • 上海网站建设优化价格网站语言切换功能如何做
  • 网站备案营业执照星际网络泰安网络公司
  • 建站哪家好就要用兴田德润南通专业网站制作
  • 杭州百度seo宁波seo关键词优化设计
  • 网站开发的软硬件需求工程造价
  • 哪里培训做网站wordpress 在线运行
  • 淄博网站建设培训学校国际新闻环球网
  • 如何用wordpress做网站如何进行新产品的推广
  • 厦门网站制作软件宿州大型网站建设公司
  • 免费申请试用网站北京东直门 网站建设
  • 凡科建站快车登录北京企业建站哪家好
  • 快速做网站哪家好梧州论坛蒙山
  • 上海网站建设与设计公司中國無法訪問wordpress