Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在QTableView中自动调整行高度_C++_Postgresql_Qt_Qtableview - Fatal编程技术网

C++ 在QTableView中自动调整行高度

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)

我有一个从QTableView(Qt5.5.1)派生的小部件,用于显示来自Postgres服务器的数据。当用户用鼠标调整列的大小时,我想自动将行高度调整为word包装的内容:

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()));
}