实验内容
阅读附件内容,编译运行附件中第一章,第三章的例子。
实验过程
第一章
- 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_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
#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);
} // 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
#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
#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;
}