Удалить дочерний из QDialog :: layout - PullRequest
0 голосов
/ 18 января 2011
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 уничтожается, он также уничтожает w, тогда как он был удален в деструкторе MyDialog;

У вас есть лучшее решение, чем клонирование QListWidget w?

1 Ответ

1 голос
/ 18 января 2011

Я думаю, что вы можете сделать SMF, как это:

~MyDialog()
{
   m_w.reparent(main_window);
}

Но я думаю, что вы делаете SMF WROG, если вам нужно клонировать QListView. Разве не легко создать контекстное меню для QListView и запустить это диалоговое окно для определенного QListViewItem?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...