2015-09-02 80 views
0

有沒有辦法將行拖出QTableView?QTableView外部拖放

我知道如何在視圖上配置一些屬性的內部成爲QTableView中移動列:

table_view_->horizontalHeader()->setSectionsMovable(true); 
table_view_->horizontalHeader()->setDragEnabled(true); 
table_view_->horizontalHeader()->setDragDropMode(QAbstractItemView::InternalMove); 

通過對文檔的QAbstractItemView::DragDropMode去,我直覺期待我的下試圖讓垂直頭座項目的外部拖動:

table_view_->verticalHeader()->setSectionsMovable(true); 
table_view_->verticalHeader()->setDragEnabled(true); 
table_view_->verticalHeader()->setDragDropMode(QAbstractItemView::DragOnly); 

不過,我只限於內部行動。

鑑於this article我得出我自己的模型從QSqlRelationalTableModel,並且增加了Qt::ItemIsDragEnabled標誌爲flags功能,所有垂直頭指標:

Qt::ItemFlags MyRelationalTableModel::flags(const QModelIndex &index) const 
{ 
    Qt::ItemFlags defaultFlags = QSqlRelationalTableModel::flags(index); 

    if(index.column() == -1 && index.row() > -1) { 
     qDebug() << "drag enabled."; 
     return Qt::ItemIsDragEnabled | defaultFlags; 
    } else { 
     qDebug() << "not drag enabled."; 
    } 

    return defaultFlags; 
} 

這並沒有改變任何東西,考慮到調試輸出,flags WASN甚至不需要垂直標題項目。

+0

我想知道爲什麼我會在這個問題上投票反對。如果有人認爲這個問題很愚蠢,那麼請指出我的愚蠢,以便我可以解決這個問題。 –

回答

0

是否將acceptDrops(true)添加到QTableView幫助中?

+0

不,因爲'setAcceptDrops(bool on)'只會啓用或禁用QTableView的拖放。在這一點上,我只關心允許用戶將東西拖出小部件。 –

+0

試試這個,特別是他們開始拖動動作的位。 [鏈接](http://doc.qt.io/qt-5.5/dnd.html)。你可以在小部件上安裝一個事件過濾器,你希望把這些頭部放入並檢查發件人? –