引用第8楼shiroki于2009-07-23 11:37发表的 :
楼上的可以溜达但别误导人家阿。 从贴的这段代码中看不出任何问题。 检查没贴出来的 部分吧, 比如B的头文件有没有加 Q_OBJECT之类的。 另外这个close函数你是自己重载了一个还是直接用的QWidget的close? 如果是自己重载的还得看看close里写了什么
close 没重写 嘿嘿 说实话 我不会重写close HOHO~~ 用的是QWidget自带的close
诺~ 代码~
class test : public QWidget
{
Q_OBJECT
public:
test(QWidget *parent = 0);
~test();
private slots:
void showPa();
private:
};
class project : public QWidget
{
Q_OBJECT
public:
project(QWidget *parent = 0);
~project();
private slots:
void showSon();
private:
test *asss;
};
========================================
project::project(QWidget *parent)
: QWidget(parent)
{
setWindowFlags(Qt::FramelessWindowHint);
setGeometry(0,25,320,190);
QPushButton * btn = new QPushButton(this);
btn->setText("call-son");
btn->setGeometry(100,100,100,25);
connect(btn, SIGNAL(clicked()), this, SLOT(showSon()));
}
void project::showSon()
{
//this->hide();
asss = new test();
//asss->setParent(this);
//if(asss->parentWidget())
asss->show();
//this->hide();
}
project::~project(){}
test::test(QWidget *parent)
: QWidget(parent)
{
setWindowFlags(Qt::FramelessWindowHint);
setGeometry(0,25,320,190);
QPushButton * btnd = new QPushButton(this);
btnd->setText("call-parent");
btnd->setGeometry(100,120,100,25);
connect(btnd, SIGNAL(clicked), this, SLOT(showPa()));
}
void test::showPa()
{
//QWidget * pa;
//pa = this->parentWidget();
//this->hide();
//pa->activateWindow();
this->close();
}
test::~test(){}
目的很简单 就是想能在两个窗体之间切换
按主界面call-son按钮能显示下一个widget
按call-parent把当前第二个窗体hide起来
再不就直接调用父窗体的show 不过没好用
就打算关闭子窗体 结果还是不好用撒
[ 此帖被sakiola在2009-07-23 12:59重新编辑 ]