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

实验内容

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

实验过程

第一章

  • t1实践
csharp 复制代码
#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实践
csharp 复制代码
#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实践
csharp 复制代码
#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实践
csharp 复制代码
#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实践
csharp 复制代码
#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实践
csharp 复制代码
#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

csharp 复制代码
#ifndef LCDRANGE_H
#define LCDRANGE_H

#include <QWidget>

class QSlider;

class LCDRange : public QWidget
{
    Q_OBJECT

public:
    LCDRange(QWidget *parent = 0);

    int value() const;

public slots:
    void setValue(int value);

signals:
    void valueChanged(int newValue);

private:
    QSlider *slider;
};

#endif

lcdrange.cpp

csharp 复制代码
#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

csharp 复制代码
#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

csharp 复制代码
#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);
    } // setupUi

void 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

csharp 复制代码
#ifndef MYDIALOG_H
#define MYDIALOG_H

#include <QDialog>
#include "ui_mydialog.h"

class MyDialog : public QDialog, public Ui_MyDialog
{
    Q_OBJECT

public:
    MyDialog(QWidget *parent = 0);

private slots:
    void enter();

private:
    QString buf;
};

#endif

mydialog.cpp

csharp 复制代码
#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

csharp 复制代码
#include <QApplication>
#include "mydialog.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MyDialog d;
    d.show();
    return app.exec();
}

第三章

实践截图

csharp 复制代码
#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;
}
相关推荐
小豆庄18 小时前
视频脱敏引擎的追踪难题:转场误判定、ID撞号和淡入窗口
qt·算法·目标检测·音视频·视频·敏捷流程
香蕉大香蕉(06敬畏市场)19 小时前
高频八股 · Java 并发编程(10):异步、ThreadLocal 与虚拟线程(收官)
java·开发语言·网络·jvm·python·ai·实习
wuminyu20 小时前
JVM规范学习总结-Class文件结构
java·linux·c语言·jvm·c++
小灰灰搞电子21 小时前
Qt 中使用 QSettings 存储结构体数据详解
开发语言·qt
l1t21 小时前
DeepSeek辅助编写连接sqlite的CLI
数据库·golang·sqlite
酌沧1 天前
MemT让记忆成为模型内生能力
jvm·人工智能·算法
LaoWaiHang1 天前
关于Qt中鼠标左键事件被子控件截留的处理
qt
初阳7852 天前
【基于Qt5仿音乐播放器(一)】——项目准备
qt·1024程序员节
l1t2 天前
在windows中测试musql数据库
数据库·sqlite·go·1024程序员节
爱好曙光2 天前
SQLite WAL 高并发写入:busy_timeout 与 checkpoint 调优实战
sqlite·性能调优·checkpoint·wal·并发写入