QTableview пропадает через некоторое время - PullRequest
0 голосов
/ 29 мая 2018

Я новичок в QT и испытываю странную проблему.У меня есть программа, которая использует QSQLquery для заполнения qtableview.После возврата на рабочий стол (Windows 10) после пробуждения из спящего режима или заставки qtableview остается пустым.

Обновление запроса (у меня есть кнопка для этого) не исправляет qtableview, соединение SQL по-прежнему отображается активным и сообщения об ошибках (с сервера SQL) не генерируются, а все остальное (выпадающие списки, текстовые поля)и т.д.) кажутся нормальными.

РЕДАКТИРОВАТЬ
Спасибо всем за помощь и комментарии!

Я потратил некоторое время, пытаясь воспроизвести ошибку, и проблема не связана с экраномзаставка / пробуждение от сна.Через некоторое время (20 - 30 минут) просмотр таблицы станет пустым.Я до сих пор не могу понять, почему это будет?Я неправильно использую указатели?

Опять же, благодарю за любую помощь, код для qtbaleview ниже, моя строка подключения находится в моем mainwindow.h;

MainWindow conn;
if(!conn.connOpen())
    ui->label_sec_status->setText("<font color='red'>Failed to Open 
Database</font>");  
else
    ui->label_sec_status->setText("<font color='green'>Connected</font>");

QSqlQueryModel * modal=new QSqlQueryModel();
QSqlQueryModel * modal2=new QSqlQueryModel();
QSqlQueryModel * modal3=new QSqlQueryModel();

QSqlQuery* qry=new QSqlQuery(conn.mydb);
QSqlQuery* qry2=new QSqlQuery(conn.mydb); 
QSqlQuery* qry3=new QSqlQuery(conn.mydb);

qry->prepare("select top 100 * from [dbo].[LOG] order by DEAL_NO DESC");
qry2->prepare("select MNGR from [dbo].[Staff]");
qry3->prepare("select SalesP from [dbo].[Sales]");

qry->exec();
qry2->exec();
qry3->exec();

modal->setQuery(*qry);
modal2->setQuery(*qry2);
modal3->setQuery(*qry3);

ui->tableView->setModel(modal); // table view
ui->tableView->resizeColumnsToContents();
ui->tableView->setAlternatingRowColors(true);
ui->tableView->setStyleSheet("alternate-background-color: #99ceff; background-color: #f2f2f2;");

ui->combo_BUSN_MNGR->setModel(modal2);  // combo box
ui->combo_SP_NAME->setModel(modal3); // combo box
delete qry; // release memory?
delete qry2;
delete qry3;
// conn.connClose(); // moved to destructor
qDebug() << (modal->rowCount());
}

1 Ответ

0 голосов
/ 17 июля 2018

Спасибо всем за помощь и комментарии.Проблема не связана с кодом, обнаружена проблема с конфигурацией виртуальной машины, на которой работает SQL-сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...