查看完整版本: [--
我用错了吗?setSectionResizeMode,无法自适应内容
--]
QTCN开发网
->
Qt基础编程
->
我用错了吗?setSectionResizeMode,无法自适应内容
[打印本页]
登录
->
注册
->
回复主题
->
发表主题
九重水
2017-02-08 11:45
我用错了吗?setSectionResizeMode,无法自适应内容
我有一个表:stock,3000多个(没错,就是A股的数量);
用QTableView显示。(很多个QTableView被装在一个QStackedWidget里面)
情况一:我没有使用setStyleSheet设置外观的时候,竖直方面的表头它是可以自适应内容的。(这时没有使用setSectionResizeMode)。
现在的情况是,我使用:
复制代码
ui->stackedWidget->setStyleSheet("QHeaderView::section, QTableCornerButton::section{background-image: url(:/images/stockbg.png); font: 12pt;}"
"QTableView{font: 12pt ;}"
);
来设置QStackedWidget里面的QTableView和QHeadView的背景和字体。
发现竖直方向的表头已经装不下内容(显示股票的数量)。
于是我用了
setSectionResizeMode。
复制代码
ui->allStockTableView->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents );
结果发现还是
不能自适应内容拉伸竖直方向的表头。
[attachment=16424]
求过来人解答,谢谢!
完整的代码如下:
复制代码
ui->stackedWidget->setStyleSheet("QHeaderView::section, QTableCornerButton::section{background-image: url(:/images/stockbg.png); font: 12pt;}"
"QTableView{font: 12pt ;}"
);
//沪深个股(所有),表(数据库),模型和视图
allStockTableModel = new QSqlTableModel(this);
allStockTableModel->setTable("stock");
allStockTableModel->setHeaderData(Stock_Id, Qt::Horizontal, tr("Stock Id"));
allStockTableModel->setHeaderData(Stock_Name, Qt::Horizontal, tr("Stock Name"));
allStockTableModel->select();
ui->allStockTableView->setModel(allStockTableModel);
ui->allStockTableView->setColumnHidden(Stock_Key, true);
ui->allStockTableView->setSelectionMode(QAbstractItemView::SingleSelection);
ui->allStockTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->allStockTableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->allStockTableView->horizontalHeader()->setSectionsClickable(false);
ui->allStockTableView->verticalHeader()->setSectionsClickable(false);
//ui->allStockTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents );
//ui->allStockTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch );
ui->allStockTableView->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents );//无法自适应内容!使用下面的代替。
/*ui->allStockTableView->verticalHeader()->setMinimumWidth(ui->allStockTableView->horizontalHeader()->fontInfo().pixelSize() *
(QString::number(allStockTableModel->rowCount()).size())
+ 2);*/
九重水
2017-02-08 11:50
我知道使用setMinimumWidth或类似函数可以让竖直的表头看起来更适应内容。
但是用了setStyleSheet设置字体和背景之后无法自适应内容(setSectionResizeMode函数),
我很不解。
求过来人解答,谢谢。
复制代码
ui->allStockTableView->verticalHeader()->setMinimumWidth(ui->allStockTableView->horizontalHeader()->fontInfo().pixelSize() *
(QString::number(allStockTableModel->rowCount()).size())
+ 2);
kaon
2017-02-08 12:15
把setSectionResizeMode放到最前面去?
九重水
2017-02-08 13:49
kaon
:
把setSectionResizeMode放到最前面去?
(2017-02-08 12:15)
也是不可以。我试过了。
这个问题比较奇怪,这个问题是在setStyleSheet之后才产生的。
我猜是不是跟这个也有关联。
现在我直接用setMinimumWidth函数设置竖直方向表头的宽度,虽然不灵活,但很方便直观。
这个问题先记一下再说。以后有时间再研究。
也希望有过经验的同学指点一二。
查看完整版本: [--
我用错了吗?setSectionResizeMode,无法自适应内容
--] [--
top
--]
Powered by
phpwind
v8.7
Code ©2003-2011
phpwind
Gzip disabled