C++ 在QTableView中自动调整行高度
我有一个从QTableView(Qt5.5.1)派生的小部件,用于显示来自Postgres服务器的数据。当用户用鼠标调整列的大小时,我想自动将行高度调整为word包装的内容:C++ 在QTableView中自动调整行高度,c++,postgresql,qt,qtableview,C++,Postgresql,Qt,Qtableview,我有一个从QTableView(Qt5.5.1)派生的小部件,用于显示来自Postgres服务器的数据。当用户用鼠标调整列的大小时,我想自动将行高度调整为word包装的内容: MyTableView::MyTableView(QWidget *parent) : QTableView(parent) { // ... connect( horizontalHeader(), SIGNAL(sectionResized(int, int, int)
MyTableView::MyTableView(QWidget *parent) : QTableView(parent)
{
// ...
connect(
horizontalHeader(),
SIGNAL(sectionResized(int, int, int)),
this,
SLOT(resizeRowsToContents()));
}
这非常适合小桌子,但大桌子实际上不适合使用,因为大减速。我需要一个信号,比如afterSectionResized
(当释放鼠标完成调整大小时),但没有这样的事件
当用户使用鼠标调整列的大小时,如何避免多个表格式设置?定义从QHeaderView派生的新类(MyHeaderView
)和新信号(resized()
)
当用户在调整分区大小后释放鼠标按钮时发出
myheaderview.h
myheaderview.cpp
在MyTableView
类中,用定义的标题小部件替换标准水平标题:
MyTableView::MyTableView(QWidget *parent) : QTableView(parent)
{
myHeaderView = new MyHeaderView(this);
setHorizontalHeader(myHeaderView);
connect(horizontalHeader(),
SIGNAL(resized()),
this,
SLOT(resizeRowsToContents()));
}
你有一些想法。你应该在
horizontalHeader
@klin上搜索mousererelease
事件-我同意,但找不到正确的方法。你介意给我一个更清楚的提示吗?
MyHeaderView::MyHeaderView(QWidget *parent)
: QHeaderView(Qt::Horizontal, parent)
{
resizing = false;
connect(this,
SIGNAL(sectionResized(int, int, int)),
this,
SLOT(setResizing()));
}
void MyHeaderView::setResizing()
{
resizing = true;
}
void MyHeaderView::mouseReleaseEvent(QMouseEvent *)
{
if (resizing) {
resizing = false;
emit resized();
}
}
MyTableView::MyTableView(QWidget *parent) : QTableView(parent)
{
myHeaderView = new MyHeaderView(this);
setHorizontalHeader(myHeaderView);
connect(horizontalHeader(),
SIGNAL(resized()),
this,
SLOT(resizeRowsToContents()));
}