2016-11-07 13 views
1

マウスを離したときにlistViewのエディタを呼び出すときに問題が発生しました。私は自分の問題を解決することができました。Qt QItemDelegateデータをコミットしてマウスのエディタを閉じるとビューウィジェット(listView)を残す

デリゲートヘッダーファイルで、Iveがエディターウィジェットポインターを作成し、コンストラクターでQ_NULLPTRという値を与えました。これは私には分かりませんでした。 createEditorにおけるその後

//in header file of Delegate 
mutable QWidget *myCustomWidget; 

//in the source file of Delegate 
MyItemDelegate::MyItemDelegate(QObject *parent) : QStyledItemDelegate(parent), 
    myCustomWidget(Q_NULLPTR) 
{ 
} 

:私は信号saveToModelFromEditorを作成したMyListViewをヘッダファイルに

QWidget *MyItemDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const 
{ 
myCustomWidget= new KontaktForm(parent); 
myCustomWidget->autoFillBackground(); 

return myCustomWidget; 
} 

()。

void MyItemDelegate::commitAndSaveData() 
{ 
if(kontaktForm!=Q_NULLPTR){ 

// after testing the UI I've decided, that the editor should remain open, and just commit data 

emit commitData(kontaktForm); 

// emit closeEditor(kontaktForm); 
} 
} 

最後に私が使用したシグナルとスロットメカニズム信号を接続するには:誰かがそれをクローズしたい場合や、

void MyListView::leaveEvent(QEvent *event) 
{ 
emit saveToModelFromEditor(); 

QListView::leaveEvent(event); 
} 

モデルにcommitDataの機能と信号をemitedし、エディタを閉じますエディタのリストビューからスロットへ

私は別のコミュニティー(VoidRealmsのFacebookグループ)の助けを借りていました。

これは誰かが助けてくれることを願っています。

答えて

1

デリゲートヘッダーファイルで、Iveはエディタウィジェットのポインタを作成し、コンストラクタでQ_NULLPTRの値を与えました。 createEditorにおけるその後

//in header file of Delegate 
mutable QWidget *myCustomWidget; 

//in the source file of Delegate 
MyItemDelegate::MyItemDelegate(QObject *parent) : QStyledItemDelegate(parent), 
    myCustomWidget(Q_NULLPTR) 
{ 
} 

:私は信号saveToModelFromEditorを作成したMyListViewをヘッダファイルに

QWidget *MyItemDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const 
{ 
myCustomWidget= new KontaktForm(parent); 
myCustomWidget->autoFillBackground(); 

return myCustomWidget; 
} 

()。

void MyItemDelegate::commitAndSaveData() 
{ 
if(kontaktForm!=Q_NULLPTR){ 

// after testing the UI I've decided, that the editor should remain open, and just commit data 

emit commitData(kontaktForm); 

// emit closeEditor(kontaktForm); 
} 
} 

最後に私が使用したシグナルとスロットメカニズム信号を接続するには:誰かがそれをクローズしたい場合や、

void MyListView::leaveEvent(QEvent *event) 
{ 
emit saveToModelFromEditor(); 

QListView::leaveEvent(event); 
} 

モデルにcommitDataの機能と信号をemitedし、エディタを閉じますエディタのリストビューからスロットへ

connect(treeView,SIGNAL(saveToModelFromEditor()),itemDelegate,SLOT(commitAndSaveData())); 

私は別のコミュニティー(VoidRealmsのFacebookグループ)の助けを借りていました。

これは誰かが助けてくれることを願っています。

関連する問題