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;
}