0
class MyDialog : public QDialog
{
public:
MyDialog(QListWidget * w)
: m_w(w)
{
m_layout = new QGridLayout(this);
m_layout.addWidget(w);
this->exec();
}
~MyDialog() {
m_layout->removeWidget(m_w);
}
private:
QGridLayout * m_layout;
QListWidget * m_w;
}
wはメインのウィンドウレイアウトの子です。問題は、MyDialogのオブジェクトが破棄されても、MyDialogのデストラクタで削除されていたのと同じように、Wも破棄された場合です。QDialog :: layoutから子を削除する
QListWidget wを複製するよりも優れたソリューションがありますか?
解決策は部分的に機能しています。親のm_wを保存し、m_w.setParent(QWidget *)で復元します。しかしその後、メインのウィンドウレイアウトでは処理されません。今はQListWidget(QlistViewではなく)をクローンします。それはビューアとのポインタのQListだけです。 – canardman