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;
}
相关推荐
蚰蜒螟1 小时前
深入解析JVM字节码解释器执行流程(OpenJDK 17源码实现)
开发语言·jvm·python
溟洵1 小时前
【C++ Qt】布局管理器
开发语言·c++·qt
C++ 老炮儿的技术栈2 小时前
自定义CString类与MFC CString类接口对比
c语言·c++·windows·qt·mfc
头发那是一根不剩了3 小时前
怎么用idea分析hprof文件定位JVM内存问题
java·jvm
python算法(魔法师版)4 小时前
.NET NativeAOT 指南
java·大数据·linux·jvm·.net
Excuse_lighttime6 小时前
JVM 机制
java·linux·jvm
夜松云7 小时前
Qt信号槽机制与UI设计完全指南:从基础原理到实战应用
开发语言·qt·ui·qt designer·布局管理·参数传递·qt信号槽
蚰蜒螟8 小时前
jvm安全点(二)openjdk17 c++源码垃圾回收安全点信号函数处理线程阻塞
jvm·安全
mahuifa16 小时前
(7)python开发经验
python·qt·pyside6·开发经验