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/