Qt4 QTableView:双击列标题调整所有列的大小
在单列标题的边缘双击时,该列的大小将调整为适合内容。 如果选择多个列,当双击任何选定列标题的边缘时,如何调整所有选定列的大小Qt4 QTableView:双击列标题调整所有列的大小,qt4,Qt4,在单列标题的边缘双击时,该列的大小将调整为适合内容。 如果选择多个列,当双击任何选定列标题的边缘时,如何调整所有选定列的大小 将一些插槽连接到QHeaderView::sectionHandleDoubleClicked信号 在该插槽中获取所选列 使用QHeaderView::setResizeMode和QHeaderView::ResizeToContents自动调整它们的大小 获取新的绝对列大小 将列大小调整模式恢复为QHeaderView::Interactive或其他任何模式 使用QHe
QHeaderView::sectionHandleDoubleClicked
信号QHeaderView::setResizeMode
和QHeaderView::ResizeToContents
自动调整它们的大小QHeaderView::Interactive
或其他任何模式QHeaderView::resizeSection
设置新的绝对列大小Widget::Widget(QWidget *parent)
: QWidget(parent)
{
QStandardItemModel *model = new QStandardItemModel(this);
for (int i = 0; i < 10; ++i)
{
QList<QStandardItem*> items;
for (int j = 0; j < 4; ++j)
{
QStandardItem *item = new QStandardItem;
QChar ch = QString::number(j).at(0);
item->setText(QString().fill(ch, 20));
items << item;
}
model->appendRow(items);
}
view = new QTableView;
view->setModel(model);
connect(view->horizontalHeader(), SIGNAL(sectionHandleDoubleClicked(int)),
this, SLOT(sectionHandleDoubleClicked(int)));
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(view);
}
void Widget::sectionHandleDoubleClicked(int logicalIndex)
{
QHeaderView *header = view->horizontalHeader();
QModelIndexList list = view->selectionModel()->selectedIndexes();
QSet<int> columns;
Q_FOREACH (QModelIndex index, list)
{
if (index.isValid())
{
columns.insert(index.column());
}
}
Q_FOREACH (int column, columns)
{
header->setResizeMode(column, QHeaderView::ResizeToContents);
int newWidth = header->sectionSize(column);
header->setResizeMode(column, QHeaderView::Interactive);
header->resizeSection(column, newWidth);
}
}
Widget::Widget(QWidget*parent)
:QWidget(父项)
{
QStandardItemModel*model=新的QStandardItemModel(本);
对于(int i=0;i<10;++i)
{
QList项目;
对于(int j=0;j<4;++j)
{
QStandardItem*项=新QStandardItem;
QChar ch=QString::number(j).at(0);
item->setText(QString().fill(ch,20));
项目行(项目);
}
视图=新的QTableView;
查看->设置模型(模型);
连接(视图->水平标题(),信号(截面处理双击(int)),
这个插槽(sectionHandleDoubleClicked(int));
QVBoxLayout*layout=新的QVBoxLayout(本);
布局->添加小部件(视图);
}
void小部件::sectionHandleDoubleClicked(int-logicalIndex)
{
QHeaderView*header=视图->水平标题();
QModelIndexList=view->selectionModel()->selectedIndex();
QSet柱;
Q_FOREACH(QModelIndex索引,列表)
{
if(index.isValid())
{
columns.insert(index.column());
}
}
Q_FOREACH(int列,列)
{
标题->setResizeMode(列,QHeaderView::ResizeToContents);
int newWidth=header->sectionSize(列);
标题->setResizeMode(列,QHeaderView::Interactive);
标题->调整大小部分(列,新宽度);
}
}