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更好的解决方案吗?

最佳答案

我认为您可以像这样做smf:

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


但是我认为,如果您必须克隆QListView,您会在smf上大吃一惊。
为QListView创建上下文菜单并为特定的QListViewItem运行此对话框难道不是很容易吗?

关于c++ - 从QDialog::layout删除子级,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4723483/

10-11 23:02