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

20242817-李臻-课下作业:Qt和Sqlite

实验内容

阅读附件内容,编译运行附件中第一章,第三章的例子。

实验过程

第一章

  • t1实践
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>int main(int argc, char *argv[])
{QApplication app(argc, argv);// 创建一个QWidget窗口QWidget window;window.setWindowTitle("t1"); // 设置窗口标题// 创建一个QPushButton按钮QPushButton hello("Hello, world!");hello.resize(100, 30);// 创建一个垂直布局管理器QVBoxLayout layout;// 将按钮添加到布局中layout.addWidget(&hello);// 设置窗口的主布局window.setLayout(&layout);// 显示窗口window.show();return app.exec();
}

在这里插入图片描述

  • t2实践
#include <QApplication>
#include <QFont>
#include <QPushButton>int main(int argc, char *argv[])
{QApplication app(argc, argv);QPushButton quit("Quit");quit.resize(75, 30);quit.setFont(QFont("Times", 18, QFont::Bold));QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));quit.show();return app.exec();
}

在这里插入图片描述

  • t3实践
#include <QApplication>
#include <QFont>
#include <QPushButton>
#include <QWidget>int main(int argc, char *argv[])
{QApplication app(argc, argv);QWidget window;window.resize(200, 120);QPushButton quit("Quit", &window);quit.setFont(QFont("Times", 18, QFont::Bold));quit.setGeometry(10, 40, 180, 40);QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));window.show();return app.exec();
}

在这里插入图片描述

  • t4实践
#include <QApplication>
#include <QFont>
#include <QPushButton>
#include <QWidget>class MyWidget : public QWidget
{
public:MyWidget(QWidget *parent = 0); // 确保参数是指针类型
};MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{setFixedSize(200, 120);QPushButton *quit = new QPushButton(tr("Quit"), this);quit->setGeometry(62, 40, 75, 30);quit->setFont(QFont("Times", 18, QFont::Bold));connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
}int main(int argc, char *argv[])
{QApplication app(argc, argv);MyWidget widget;widget.show();return app.exec();
}

在这里插入图片描述

  • t5实践
#include <QApplication>
#include <QFont>
#include <QLCDNumber>
#include <QPushButton>
#include <QSlider>
#include <QVBoxLayout>
#include <QWidget>class MyWidget : public QWidget
{
public:MyWidget(QWidget *parent = 0);};
MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{QPushButton *quit = new QPushButton(tr("Quit"));quit->setFont(QFont("Times", 18, QFont::Bold));QVBoxLayout *layout = new QVBoxLayout;layout->addWidget(quit);layout->addWidget(new QLCDNumber(2));layout->addWidget(new QSlider(Qt::Horizontal));layout->addWidget(new QSlider(Qt::Horizontal));connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));connect(layout, SIGNAL(valueChanged(int)), this, SLOT(display(int)));setLayout(layout);
}int main(int argc, char *argv[])
{QApplication app(argc, argv);MyWidget widget;widget.show();return app.exec();
}

在这里插入图片描述

  • t6实践
#include <QApplication>
#include <QFont>
#include <QGridLayout>
#include <QLCDNumber>
#include <QPushButton>
#include <QSlider>
#include <QVBoxLayout>
#include <QWidget>class LCDRange : public QWidget
{
public:LCDRange(QWidget *parent = 0);};
LCDRange::LCDRange(QWidget *parent) : QWidget(parent)
{QLCDNumber *lcd = new QLCDNumber(2);lcd->setSegmentStyle(QLCDNumber::Filled);QSlider *slider = new QSlider(Qt::Horizontal);slider->setRange(0, 99);slider->setValue(0);connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));QVBoxLayout *layout = new QVBoxLayout;layout->addWidget(lcd);layout->addWidget(slider);setLayout(layout);
}class MyWidget : public QWidget
{
public:MyWidget(QWidget *parent = 0);
};MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{QPushButton *quit = new QPushButton(tr("Quit"));quit->setFont(QFont("Times", 18, QFont::Bold));connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));QGridLayout *grid = new QGridLayout;for (int row = 0; row < 3; ++row) {for (int column = 0; column < 3; ++column) {LCDRange *lcdRange = new LCDRange;grid->addWidget(lcdRange, row, column);}}QVBoxLayout *layout = new QVBoxLayout;layout->addWidget(quit);layout->addLayout(grid);setLayout(layout);
}int main(int argc, char *argv[])
{QApplication app(argc, argv);MyWidget widget;widget.show();return app.exec();
}

在这里插入图片描述

  • t7实践

lcdrange.h

#ifndef LCDRANGE_H
#define LCDRANGE_H#include <QWidget>class QSlider;class LCDRange : public QWidget
{Q_OBJECTpublic:LCDRange(QWidget *parent = 0);int value() const;public slots:void setValue(int value);signals:void valueChanged(int newValue);private:QSlider *slider;
};#endif

lcdrange.cpp

#include <QLCDNumber>
#include <QSlider>
#include <QVBoxLayout>
#include "lcdrange.h"LCDRange::LCDRange(QWidget *parent) : QWidget(parent)
{LCDNumber *lcd = new LCDNumber(2);lcd->setSegmentStyle(LCDNumber::Filled);slider = new QSlider(Qt::Horizontal);slider->setRange(0, 99);slider->setValue(0);connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));connect(slider, SIGNAL(valueChanged(int)), this, SIGNAL(valueChanged(int)));QVBoxLayout *layout = new QVBoxLayout;layout->addWidget(lcd);layout->addWidget(slider);setLayout(layout);
}int LCDRange::value() const
{return slider->value();
}void LCDRange::setValue(int value)
{slider->setValue(value);
}

lcdmain.cpp

#include <QLCDNumber>
#include <QSlider>
#include <QVBoxLayout>
#include "lcdrange.h"LCDRange::LCDRange(QWidget *parent) : QWidget(parent)
{LCDNumber *lcd = new LCDNumber(2);lcd->setSegmentStyle(LCDNumber::Filled);slider = new QSlider(Qt::Horizontal);slider->setRange(0, 99);slider->setValue(0);connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));connect(slider, SIGNAL(valueChanged(int)), this, SIGNAL(valueChanged(int)));QVBoxLayout *layout = new QVBoxLayout;layout->addWidget(lcd);layout->addWidget(slider);setLayout(layout);
}int LCDRange::value() const
{return slider->value();
}void LCDRange::setValue(int value)
{slider->setValue(value);
}
  • t8实践

ui——mydialog.h

#ifndef UI_MYDIALOG_H
#define UI_MYDIALOG_H#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>
#include <QtGui/QGridLayout>
#include <QtGui/QLineEdit>
#include <QtGui/QPushButton>
#include <QtGui/QTextBrowser>class Ui_MyDialog
{
public:QGridLayout *gridLayout;QTextBrowser *textBrowser;QLineEdit *lineEdit;QPushButton *pushButton;void setupUi(QDialog *MyDialog){if (MyDialog->objectName().isEmpty()){MyDialog->setObjectName(QString::fromUtf8("MyDialog"));}QSize size(328, 217);size = size.expandedTo(MyDialog->minimumSizeHint());MyDialog->resize(size);gridLayout = new QGridLayout(MyDialog);gridLayout->setObjectName(QString::fromUtf8("gridLayout"));textBrowser = new QTextBrowser(MyDialog);textBrowser->setObjectName(QString::fromUtf8("textBrowser"));gridLayout->addWidget(textBrowser, 0, 0, 1, 2);lineEdit = new QLineEdit(MyDialog);lineEdit->setObjectName(QString::fromUtf8("lineEdit"));gridLayout->addWidget(lineEdit, 1, 0, 1, 1);pushButton = new QPushButton(MyDialog);pushButton->setObjectName(QString::fromUtf8("pushButton"));gridLayout->addWidget(pushButton, 1, 1, 1, 1);retranslateUi(MyDialog);QObject::connectSlotsByName(MyDialog);} // setupUivoid retranslateUi(QDialog *MyDialog)
{MyDialog->setWindowTitle(QApplication::translate("MyDialog", "My_Dialog", 0, QApplication::UnicodeUTF8));pushButton->setText(QApplication::translate("MyDialog", "Enter", 0, QApplication::UnicodeUTF8));Q_UNUSED(MyDialog);
} // retranslateUi};namespace Ui {class MyDialog: public Ui_MyDialog {};
} // namespace Ui#endif // UI_MYDIALOG_H

mydialog.h

#ifndef MYDIALOG_H
#define MYDIALOG_H#include <QDialog>
#include "ui_mydialog.h"class MyDialog : public QDialog, public Ui_MyDialog
{Q_OBJECTpublic:MyDialog(QWidget *parent = 0);private slots:void enter();private:QString buf;
};#endif

mydialog.cpp

#include "mydialog.h"MyDialog::MyDialog(QWidget *parent) : QDialog(parent)
{setupUi(this);connect(pushButton, SIGNAL(clicked()), this, SLOT(enter()));
}void MyDialog::enter()
{buf += lineEdit->text() + '\n';lineEdit->clear();textBrowser->setText(buf);textBrowser->moveCursor(QTextCursor::End);
}

mydialogmain.cpp

#include <QApplication>
#include "mydialog.h"int main(int argc, char *argv[])
{QApplication app(argc, argv);MyDialog d;d.show();return app.exec();
}

第三章

实践截图
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>int rscallback(void *p, int argc, char **argv, char **argvv)
{int i;*(int *)p = 0;for(i=0; i<argc; i++)printf("%s=%s_", argv[i], argv[i]?argv[i]:"NULL");putchar('\n');return 0;
}int main(void)
{sqlite3 *db;char *err = 0;int ret = 0;int empty = 1;ret = sqlite3_open("./test.db", &db);if(ret != SQLITE_OK) {fputs(sqlite3_errmsg(db), stderr);fputs("\n", stderr);exit(1);}ret = sqlite3_exec(db, "select * from employee;", rscallback, &empty, &err);if(ret!=SQLITE_OK) {fputs(err, stderr);fputs("\n", stderr);sqlite3_close(db);exit(1);}if(empty) {fputs("table_employee_is_empty\n", stderr);exit(1);}sqlite3_close(db);return 0;
}

在这里插入图片描述

相关文章:

  • MyBatis源码解读5(3.1、缓存简介)
  • 懒人美食帮SpringBoot订餐系统开发实现
  • MNIST DDP 分布式数据并行
  • Java泛型补充与理解
  • 虚幻引擎5-Unreal Engine笔记之常用核心类的继承关系
  • 【GESP真题解析】第 19 集 GESP 二级 2025 年 3 月编程题 1:等差矩阵
  • Scrapyd 详解:分布式爬虫部署与管理利器
  • C# 高效处理海量数据:解决嵌套并行的性能陷阱
  • 图片转ICO图标工具
  • 《Go小技巧易错点100例》第三十三篇
  • Flutter - UIKit开发相关指南 - 导航
  • 互联网大厂Java求职面试:电商商品推荐系统中的AI技术应用
  • 第31讲 循环缓冲区与命令解析
  • 【Tools】omnetpp5.6.2安装
  • 理解 Token 索引 vs 字符位置
  • DAY 17 训练
  • 【CTF】Linux Shell RCE绕过(bypass)技术总结
  • 低代码开发:开启软件开发的新篇章
  • 算法导论第9章思考题
  • 【c++】【数据结构】二叉搜索树详解
  • 因操纵乙烯价格再遭诉讼,科莱恩等四家企业被陶氏索赔60亿
  • 多地警务新媒体整合:关停交警等系统账号,统一信息发布渠道
  • 多家中小银行存款利率迈入“1时代”
  • 英国首相斯塔默住所起火,警方紧急调查情况
  • 权益类基金发行回暖,这些老将挂帅新基,谁值得买?
  • 韩国总统选战打响:7人角逐李在明领跑,执政党临阵换将陷入分裂