• 4846阅读
  • 3回复

为什么那张表没有显示出来呢?按教程做的啊???? [复制链接]

上一主题 下一主题
离线zq123456
 
只看楼主 倒序阅读 楼主  发表于: 2011-08-01
  1. #ifndef DATABASE_H
  2. #define DATABASE_H
  3. #include <QSqlDatabase>
  4. #include <QSqlQuery>
  5. static bool createConnection()
  6. {
  7. QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  8. db.setDatabaseName("database.db");
  9. if(!db.open()) return false;
  10. QSqlQuery query;
  11. query.exec("create table student (id int primary key, name vchar,course int)");
  12. query.exec("insert into student values (1,'yafei0',1)");
  13. query.exec("insert into student values (2,'yafei1',1)");
  14. query.exec("insert into student values (3,'yafei2',2)");
  15. query.exec("create table course (id int primary key, name vchar, teacher vchar)");
  16. query.exec("insert into course values (1,'Math','yafeilinux1')");
  17. query.exec("insert into course values (2,English'','yafeilinux2')");
  18. query.exec("insert into course values (3,'Computer','yafeilinux3')");
  19. return true;
  20. }
  21. #endif // DATABASE_H
  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QSqlRelationalTableModel>
  4. #include<QTableView>
  5. #include <QWidget>
  6. namespace Ui {
  7. class Widget;
  8. }
  9. class Widget : public QWidget
  10. {
  11. Q_OBJECT
  12. public:
  13. explicit Widget(QWidget *parent = 0);
  14. ~Widget();
  15. QSqlRelationalTableModel *model;
  16. private:
  17. Ui::Widget *ui;
  18. };
  19. #endif // WIDGET_H
  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. Widget::Widget(QWidget *parent) :
  4. QWidget(parent),
  5. ui(new Ui::Widget)
  6. {
  7. ui->setupUi(this);
  8. model = new QSqlRelationalTableModel(this);
  9. model->setEditStrategy(QSqlTableModel::OnFieldChange); //属性变化时写入数据库
  10. model->setTable("student");
  11. model->setRelation(2,QSqlRelation("course","id","name"));
  12. //将student表的第三个属性设为course表的id属性的外键,并将其显示为course表的name属性的值
  13. model->setHeaderData(0, Qt::Horizontal, QObject::tr("ID"));
  14. model->setHeaderData(1, Qt::Horizontal, QObject::tr("Name"));
  15. model->setHeaderData(2, Qt::Horizontal, QObject::tr("Course"));
  16. model->select();
  17. ui->tableView->setModel(model);
  18. }
  19. Widget::~Widget()
  20. {
  21. delete ui;
  22. }


  1. #include <QtGui/QApplication>
  2. #include "widget.h"
  3. #include "database.h"
  4. int main(int argc, char *argv[])
  5. {
  6. QApplication a(argc, argv);
  7. Widget w;
  8. w.show();
  9. if(!createConnection()) return 1;
  10. return a.exec();
  11. }



离线luoyang

只看该作者 1楼 发表于: 2011-08-01
首先我先知道有没有报错什么其他的提示~~

如果都没有的话~

我觉得是因为你没有把你的数据库文件放在你的build-desktop目录下~~

在不行我就不知道了得看情况分析了~
离线zq123456
只看该作者 2楼 发表于: 2011-08-01
我把widget里构造函数model开始的内容,放在了一个新增加的button里就能显示出来了,为什么放在构造函数里就不行了呢???
离线ppdayz

只看该作者 3楼 发表于: 2011-08-01
  1. #include <QtGui/QApplication>
  2. #include "widget.h"
  3. #include "database.h"
  4. int main(int argc, char *argv[])
  5. {
  6. QApplication a(argc, argv);
  7. Widget w;
  8. w.show();
  9. if(!createConnection()) return 1;
  10. return a.exec();
  11. }

if(!createConnection()) return 1;
这行往上面移动,

  1. #include <QtGui/QApplication>
  2. #include "widget.h"
  3. #include "database.h"
  4. int main(int argc, char *argv[])
  5. {
  6. QApplication a(argc, argv);
  7. if(!createConnection()){
  8. return 1;
  9. }
  10. Widget w;
  11. w.show();
  12. return a.exec();
  13. }





快速回复
限100 字节
 
上一个 下一个