Приветствую.
Я здесь новенький. Хотя читаю форум и сайт постоянно, решил зарегаться только сейчас.
Не бейте палками, знаю, что тема избитая, но мне нужна помощь. Долгие чтения статей на trolltech.com, на этом форуме/сайте мне не помогли.
Пишу диплом на QT, параллельно изучая ее.
Итак проблема.
Код:
#include <QtGui>
#include <QtSql>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase( "QMYSQL" );
db.setDatabaseName( "dbname" );
db.setUserName( "root" );
db.setPassword("pass");
db.setHostName( "localhost" );
db.open();
if (!db.open())
{
QMessageBox::warning( 0 , "Error! Not connect to base", db.lastError().databaseText());
}
QSqlTableModel model;// = new QSqlTableModel;
QTableView *view = new QTableView;
QString str = "tereptab";
view->setModel(&model);
model.setTable(str);
model.select();
view->show();
app.exec();
return 0;
Работает прекрасно, проблем не возникает.
Но когда я начинаю его пользовать в своем дипломнике, начинаются проблемы.
В поиске решения, я написал небольшой пример, наглядно демонтрирующий проблему:
[b]main.cpp[/b]
#include <QtGui>
#include <QtSql>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow *mw = new MainWindow();
mw->setGeometry(200,200,640,480);
mw->show();
app.setStyle(new QPlastiqueStyle);
app.exec();
return 0;
}
//---------------------------------------------------
[b]mainwindow.cpp[/b]
#include "mainwindow.h"
//#include "ui_mainwindow.h"
#include <QtSql>
MainWindow::MainWindow()
{
mainWidget = new QWidget();
lay = new QVBoxLayout;
butCon = new QPushButton(tr("Connect"));
connect(butCon, SIGNAL(clicked()), this, SLOT(slotCon()));
lay->addWidget(butCon);
mainWidget->setLayout(lay);
setCentralWidget(mainWidget);
}
MainWindow::~MainWindow()
{
}
void MainWindow::slotCon()
{
QSqlDatabase db = QSqlDatabase::addDatabase( "QMYSQL" );
db.setDatabaseName( "terep" );
db.setUserName( "root" );
db.setPassword("vertrigo");
db.setHostName( "localhost" );
db.open();
if (!db.open())
{
QMessageBox::warning( 0 , "Error! Not connect to base", db.lastError().databaseText());
}
QSqlTableModel model;// = new QSqlTableModel;
QTableView *view = new QTableView;
QString str = "tereptab";
view->setModel(&model);
model.setTable(str);
model.select();
view->show();
setCentralWidget(view);
}
//---------------------------------------------------
[b]mainwindow.h[/b]
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMessageBox>
#include <QtGui>
#include <QtSql>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow();
~MainWindow();
QPushButton *butCon;
QVBoxLayout *lay;
QWidget *mainWidget;
private slots:
void slotCon();
};
#endif // MAINWINDOW_H
Проблема заключается в том, что в первом варианте таблица отображается нормально.
Во втором (необходимом) это выглядит так:
То есть сам Грид куда то девается.
Прошу помощи. Уже вот вот грядет защита
ps пишу под 7ой виндой, QT 2010.05