表头 QHeaderView
tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeMode)
enum ResizeMode
{
Interactive,
Stretch,
Fixed,
ResizeToContents,
Custom = Fixed
};
QHeaderView::Interactive | 用户可以调整节的大小。也可以使用resizeSection()以编程方式调整节的大小。截面大小默认为defaultSectionSize。(另请参见cascadingSectionResizes。) |
QHeaderView::Fixed | 用户无法调整节的大小。只能使用resizeSection()以编程方式调整节的大小。截面大小默认为defaultSectionSize。 |
QHeaderView::Stretch | QHeaderView将自动调整节的大小以填充可用空间。用户或程序无法更改大小。 |
QHeaderView::ResizeToContents | QHeaderView将根据整个列或行的内容自动调整节的大小,使其达到最佳大小。用户或程序无法更改大小。(该值在qt4.2中引入) |
QPoint MainWindow::getItemPos(QTableWidget* pTableWidget, int iRow, int iCol)
{
QPoint cRes;
int iWidth = 0;
int iHeight = 0;
QHeaderView* pHHeader = pTableWidget->horizontalHeader();
QHeaderView* pVHeader = pTableWidget->verticalHeader();
for (int i = 0; i < iCol; i++)
{
iWidth += pHHeader->sectionSize(i);
}
if (pVHeader->isVisible() == true)
{
iWidth += pVHeader->width();
}
for (int i = 0; i < iRow; i++)
{
iHeight += pVHeader->sectionSize(i);
}
if (pHHeader->isVisible() == true)
{
iHeight += pHHeader->height();
}
cRes.setX(iWidth);
cRes.setY(iHeight);
return cRes;
}
void MainWindow::showMode(int iColumn)
{
int iWidth = m_pTable->horizontalHeader()->sectionSize(iColumn);
if (m_pModeSelectUi == nullptr)
{
m_pModeSelectUi = new ModeSelectUi(this);
m_pModeSelectUi->show();
}
QPoint cPos = getItemPos(m_pTable, 0, iColumn);
qDebug()<<iColumn;
qDebug()<<"iWidth:"<<iWidth<<" cPos:"<<cPos;
m_pModeSelectUi->setWidth(iWidth);
m_pModeSelectUi->move(cPos);
m_pModeSelectUi->setVisible(true);
}