【问题标题】:QTableview goes blank after period of timeQTableview 在一段时间后变为空白
【发布时间】:2018-07-17 12:16:37
【问题描述】:

我是 QT 新手,遇到了一个奇怪的问题。我有一个使用 QSQLquery 填充 qtableview 的程序。从睡眠或屏幕保护程序唤醒后返回桌面(Windows 10)后,qtableview 为空白。

刷新查询(我有一个按钮)不能修复 qtableview,SQL 连接仍然显示为活动,并且没有生成任何错误消息(来自 SQL 服务器)并且其他所有内容(下拉列表、文本框等)显得正常。

编辑
感谢大家的帮助和cmets!

我花了一些时间试图重现该错误,该问题与屏幕保护程序/从睡眠中唤醒无关。一段时间后(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());
}

【问题讨论】:

  • 在我看来这是一个错误,报告它。
  • 我在使用 QT 5.9.1 时没有遇到问题,所以从 5.11 回滚并重新编译,但它仍然会发生。当我使用 windeployqt 时,它会下载/更新到较新的 .dll 吗?
  • 您提供的信息很少,很难说...您尝试过调试吗?将调试器附加到正在运行的进程并检查您的内部数据缓冲区。您可以尝试在小部件上调用updateupdateGeometry,甚至删除并重新创建它...
  • 表格视图是否完全为空,或者它具有正确的行数和列数,但所有单元格都是空的?
  • 它具有正确的列标题和布局,但单元格为空白。当您尝试刷新查询/表格视图时,它只会变成一个空的灰色方块。

标签: c++ qt


【解决方案1】:

感谢大家的帮助和cmets。该问题与代码无关,发现是运行 SQL Server 的 VM 配置存在问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    相关资源
    最近更新 更多