我有一个表: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 );
结果发现还是
不能自适应内容拉伸竖直方向的表头。

求过来人解答,谢谢!
完整的代码如下:
- 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);*/