有沒有簡單的方法來做到這一點。我建議像下一樣:
使用矢量來存儲移動標題的logicalIndexes
。
QVector<int> last;
使用sectionMoved
信號,以檢測移動並存儲在logicalIndex
矢量:
connect(ui->tableView->horizontalHeader(),static_cast<void (QHeaderView::*)(int,int,int)>(&QHeaderView::sectionMoved),[=](int logicalIndex, int oldVisualIndex, int newVisualIndex)
{//with lambda
//you can also provide shecking is current logicalIdnex already exist in vector
last.push_back(logicalIndex);
});
語法是如此複雜,因爲難看有另一個sectionMoved
在QHeaderView
,所以它是必需的。如果你不知道新的語法,使用舊:
connect(ui->tableView->horizontalHeader(), SIGNAL(sectionMoved(int,int,int)), this, SLOT(yourSlot(int,int,int)));
但創建yourSlot(int,int,int)
並在此插槽做last.push_back(logicalIndex);
。
當你想saveState
,隱藏與logicalIndex
您在矢量存儲和保存所有部分:
QByteArray array;
for(int i = 0; i < last.size(); i++)
{
ui->tableView->horizontalHeader()->hideSection(last.at(i));
}
array = ui->tableView->horizontalHeader()->saveState();
添加CONFIG += c++11
親文件,如果你想使用新的語法和lambda。