我已经找到了示例使用方法QTableView:http :
//doc.trolltech.com/4.5/sql-querymodel.html
可以正常工作。数据显示在中QTableView。
但是QTableView在此示例中,是在main.cpp文件中动态创建的。在我的应用程序中,我有主窗体,并QTableView在设计器中添加了。我尝试将其填充QTableView到构造函数中,但没有结果:
MainApplication::MainApplication(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainApplication)
{
ui->setupUi(this);
QMap<QString, double> currencyMap;
currencyMap.insert("AUD", 1.3259);
currencyMap.insert("CHF", 1.2970);
currencyMap.insert("CZK", 24.510);
CurrencyModel currencyModel;
currencyModel.setCurrencyMap(currencyMap);
ui->tableView_currencies->setModel(¤cyModel);
ui->tableView_currencies->setAlternatingRowColors(true);
ui->tableView_currencies->setWindowTitle(QObject::tr("Currencies"));
ui->tableView_currencies->show();
}
Run Code Online (Sandbox Code Playgroud)
QTableView在主窗体上显示为空,只有列和行标题可见。并且未显示数据。
是否与例子,其中分量喜欢的网站的人知道QTableView,QListView在设计中加入?在trolltech(nokia)教程中,所有组件都是动态创建的。
执行构造函数后,该模型不再有效!
您创建了一个本地对象currencyModel,当该对象超出范围时(在c'tor的结尾),该对象将被销毁,但是将一个指针传递给它作为表视图的模型!
表格视图不会深度复制给定的模型,实际上甚至不拥有所传递指针的所有权:
除非视图是模型的父对象,否则视图不会获得模型的所有权,因为该视图可能在许多不同的视图之间共享。(QTableView doc)
您应该简单地为模型分配无堆(使用new),并将视图设置为其父对象。这样,表视图还将处理其删除:
CurrencyModel *currencyModel = new CurrencyModel(ui->tableView_currencies);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2396 次 |
| 最近记录: |