一段时间后,QTableview变为空白

时间:2018-05-29 05:53:10

标签: c++ qt

我是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 :(得分:0)

感谢大家的帮助和评论。该问题与代码无关,发现该问题与运行SQL Server的VM配置有关。