• 5773阅读
  • 6回复

如何删除一个子控件? [复制链接]

上一主题 下一主题
离线draker
 

只看楼主 倒序阅读 楼主  发表于: 2007-09-11
— 本帖被 XChinux 执行加亮操作(2007-09-11) —
在主窗口建立的输入框如下

QMainWidget::QMainWidget( )
{
        QLineEdit* aEdit= new QLineEdit( this )
}

如果删除这个输入框:

QMainWidget::Work( )
{
    delete aEdit ; 
}
如果直接删除会引起错误, 应该删除前还需要将aEdit 从QMainWidget子控件队列中去除吧??

该如何去哩?

离线XChinux

只看该作者 1楼 发表于: 2007-09-11
会引起错误吗?直接删除不会出错。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线draker

只看该作者 2楼 发表于: 2007-09-11
如果这个控件,你不用鼠标点进去, 直接删除是不会出错

但是如果你点了鼠标或者输入文字了, 则会提示出错!
离线XChinux

只看该作者 3楼 发表于: 2007-09-11
我试验的不会出错。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线draker

只看该作者 4楼 发表于: 2007-09-11
请代码贴出来看看
离线XChinux

只看该作者 5楼 发表于: 2007-09-11
mainwindow.h:

#ifndef  MAINWINDOW_H
#define  MAINWINDOW_H
#include <QtGui>
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    MainWindow();
    ~MainWindow();
    QLineEdit *lineEdit;
public slots:
    void on_pushButton_clicked();
};
#endif


mainwindow.cpp:

#include "mainwindow.h"

MainWindow::MainWindow()
{
    resize(800, 600);
    QPushButton *pushButton = new QPushButton(this);
    pushButton->setText("Click Me");
    pushButton->move(100, 100);
    lineEdit = new QLineEdit(this);
    lineEdit->move(100, 400);
    connect(pushButton, SIGNAL(clicked()), this, SLOT(on_pushButton_clicked()));
}

MainWindow::~MainWindow()
{
}

void MainWindow::on_pushButton_clicked()
{
    delete lineEdit;
}
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线liujianboy
只看该作者 6楼 发表于: 2007-09-12
按理说QObject的子类都不应该自己用delete删除吧,它有自己的内存回收机制。
快速回复
限100 字节
 
上一个 下一个