您的位置:首页 > 编程语言 > Qt开发

QT之数据库 和 GraphicsView使用

2015-05-28 22:53 351 查看
1、QT创建Table表格控件。
QSqlTableModel *model;
model = new QSqlTableModel(this);
model->setTable(tableName);//绑定数据库的表名
//model->setFilter(filter);//设置where之类
model->select();//执行select操作
//设置表格的头部字段
model->setHeaderData(0, Qt::Horizontal, tr("ID"));
model->setHeaderData(1, Qt::Horizontal, tr("First name"));
model->setHeaderData(2, Qt::Horizontal, tr("Last name"));
//关联表格 与 视图显示
QTableView *view = new QTableView;
view->setModel(model);
2、提示警告信息
QMessageBox::warning(this, tr("Cached Table"),
tr("The database reported an error: %1")
.arg(model->lastError().text()));
3、创建QGraphicView的基本使用流程
QGraphicsView view; //定义视图

QGraphicsScene *scene; ////创建场景舞台
scene = new QGraphicsScene(this);//参数为view
scene->setSceneRect(0, 0, 465, 615);
setScene(scene);//绑定View与Scene的关系
//向场景内添加内容
QGraphicsPixmapItem *logo = scene->addPixmap(QPixmap(":/logo.png"));
logo->setPos(30, 515);
4、获取视图的指定位置的Item对象
void View::mouseReleaseEvent(QMouseEvent *event)
{
if (QGraphicsItem *item = itemAt(event->pos())) {
//对item进行判断和处理
}
QGraphicsView::mouseReleaseEvent(event);
}
5、遍历场景内的所有Item
QList<QGraphicsItem *> items = scene->items();
while(!items.empty()) {
QGraphicsItem *item = items.takeFirst();
//item操作
}
6、QT数据库的创建、连接、写入操作
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
if (!db.open()) {
QMessageBox::critical(0, tr("Cannot open database"),
tr("Unable to establish a database connection.\n"
"This example needs SQLite support. Please read "
"the Qt SQL driver documentation for information how "
"to build it."), QMessageBox::Cancel);
return;
}

QSqlQuery query;
query.exec("create table person (id int primary key, "
"name varchar(20), address varchar(200), typeid int)");
query.exec("insert into person values(1, 'Alice', "
"'<qt>123 Main Street<br/>Market Town</qt>', 101)");
query.exec("insert into person values(2, 'Bob', "
"'<qt>PO Box 32<br/>Mail Handling Service"
"<br/>Service City</qt>', 102)");
query.exec("insert into person values(3, 'Carol', "
"'<qt>The Lighthouse<br/>Remote Island</qt>', 103)");
query.exec("insert into person values(4, 'Donald', "
"'<qt>47338 Park Avenue<br/>Big City</qt>', 101)");
query.exec("insert into person values(5, 'Emma', "
"'<qt>Research Station<br/>Base Camp<br/>"
"Big Mountain</qt>', 103)");
//! [Set up the main table]

//! [Set up the address type table]
query.exec("create table addresstype (id int, description varchar(20))");
query.exec("insert into addresstype values(101, 'Home')");
query.exec("insert into addresstype values(102, 'Work')");
query.exec("insert into addresstype values(103, 'Other')");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: