• 5664阅读
  • 14回复

Qt新人多窗口问题,谢谢各位 [复制链接]

上一主题 下一主题
离线土匪老黑
 
只看楼主 正序阅读 楼主  发表于: 2010-01-21
在界面上弹出对话框:如图


要实现点击“选择成员”按钮后弹出一个对话框
“选择成员的定义”
arraymemberchooseButton = new QPushButton(QString::fromLocal8Bit("选择成员"));
函数:
connect(arraymemberchooseButton,SIGNAL(clicked()),this,SLOT(choosearray()));
槽函数:
void ArrayProgram::choosearray()
{
    ship = new QXSRShip;
    ship->exec();
    delete ship;
}
这里说明一下 QXSRShip是继承QDialog的一个类
“构造函数”如下:
QXSRShip::QXSRShip(QWidget *parent) : QDialog(parent)
{
    
    setWindowTitle(QString::fromLocal8Bit("成员选择"));

    parseshipXML = new QPushButton(QString::fromLocal8Bit("解析Xml文件"));
    cancelButton = new QPushButton(QString::fromLocal8Bit("取消"));

    hBoxLayout = new QHBoxLayout;
    hBoxLayout->setSpacing(20);//按钮之间的距离
    hBoxLayout->addWidget(parseshipXML);
    hBoxLayout->addWidget(cancelButton);
    
    connect(parseshipXML, SIGNAL(clicked()),this, SLOT(parseXML()));

    connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
    
    resize(200,200);
}
不知道为什么点击“选择成员”按钮后弹出一个空白的对话框???但窗口标题以改为“成员选择”。说明:
setWindowTitle(QString::fromLocal8Bit("成员选择"));
已经执行了。
望解答。谢谢。
离线土匪老黑
只看该作者 14楼 发表于: 2010-01-21
引用第11楼yangfanxing于2010-01-21 17:58发表的  :
this->setLayout(hBoxLayout );
是不是少了这个???布局没加到窗体上~

{
    QFrame* frame = new QFrame(this);
    _layout = new QVBoxLayout;
    frame->setLayout(_layout);
    _layout->addWidget(new QLabel("<h1>QXSR Ship</h1>"), 0, Qt::AlignCenter);

    QPushButton* parseXML = new QPushButton(QString::fromLocal8Bit("解析Xml文件"));
    _layout->addWidget(parseXML);

    
    connect(parseXML, SIGNAL(clicked()),this, SLOT(parseXML()));

    
    QScrollArea* scrollArea = new QScrollArea;
    scrollArea->setWidget(frame);
    scrollArea->setWidgetResizable(true);
}

 / /如果是这种带有滚动条的情况呢??/ /
这种情况下如何把布局加到窗口啊???
离线土匪老黑
只看该作者 13楼 发表于: 2010-01-21
引用第11楼yangfanxing于2010-01-21 17:58发表的  :
this->setLayout(hBoxLayout );
是不是少了这个???布局没加到窗体上~

果然是这个问题,还真没注意过呀!谢谢
离线2nd090215
只看该作者 12楼 发表于: 2010-01-21
楼主你的图没有传上吧,呵呵
把图挂上,我抽空帮你看看
离线yangfanxing
只看该作者 11楼 发表于: 2010-01-21
this->setLayout(hBoxLayout );
是不是少了这个???布局没加到窗体上~
PHPWind好恶心。。。不想看这种界面。。。
离线土匪老黑
只看该作者 10楼 发表于: 2010-01-21
我知道了,是窗体构造的问题
可是如下构造窗体有问题么???
我看了半天也没发现啊
QXSRShip::QXSRShip(QWidget *parent) : QDialog(parent)
{
    
    setWindowTitle(QString::fromLocal8Bit("成员选择"));

    parseshipXML = new QPushButton(QString::fromLocal8Bit("解析Xml文件"));
    cancelButton = new QPushButton(QString::fromLocal8Bit("取消"));
    
    hBoxLayout = new QHBoxLayout;
    hBoxLayout->setSpacing(20);//按钮之间的距离
    hBoxLayout->addWidget(parseshipXML);
    hBoxLayout->addWidget(cancelButton);
    
    
    connect(parseshipXML, SIGNAL(clicked()),this, SLOT(parseXML()));

    connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
    
    resize(200,200);
}
离线土匪老黑
只看该作者 9楼 发表于: 2010-01-21
引用第8楼yangfanxing于2010-01-21 17:09发表的  :
不是啊。我是说相当于把
void ArrayProgram::choosearray()
移到这个构造函数里;
就是在这个构造函数里new QXSRShip,跳过信号槽这一段,然后看看控件显示正不正常;
不正常的话说嘛窗体构造本身就有问题了~调试正常了在连接信号-槽。

太感谢你了,不过我先开会去了,晚上再斟酌吧,太感谢你了!!!呵呵
离线yangfanxing
只看该作者 8楼 发表于: 2010-01-21
不是啊。我是说相当于把
void ArrayProgram::choosearray()
移到这个构造函数里;
就是在这个构造函数里new QXSRShip,跳过信号槽这一段,然后看看控件显示正不正常;
不正常的话说嘛窗体构造本身就有问题了~调试正常了在连接信号-槽。
PHPWind好恶心。。。不想看这种界面。。。
离线土匪老黑
只看该作者 7楼 发表于: 2010-01-21
引用第6楼yangfanxing于2010-01-21 16:54发表的  :
QXSRShip不是你自己继承构造的窗口类吗?
在主函数ArrayProgram里(或构造函数以外其它地方)new一个这种窗口,看看你继承的窗口、控件显示是不是对的。。。呵呵。。。

为什么显示不出来呢?
QXSRShip::QXSRShip(QWidget *parent) : QDialog(parent)
{
    
    setWindowTitle(QString::fromLocal8Bit("成员选择"));

    parseshipXML = new QPushButton(QString::fromLocal8Bit("解析Xml文件"));
    cancelButton = new QPushButton(QString::fromLocal8Bit("取消"));
    
    hBoxLayout = new QHBoxLayout;
    hBoxLayout->setSpacing(20);//按钮之间的距离
    hBoxLayout->addWidget(parseshipXML);
    hBoxLayout->addWidget(cancelButton);
    
    
    connect(parseshipXML, SIGNAL(clicked()),this, SLOT(parseXML()));

    connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
    
    resize(200,200);
}
这个构造函数的问题么?
离线yangfanxing
只看该作者 6楼 发表于: 2010-01-21
QXSRShip不是你自己继承构造的窗口类吗?
在主函数ArrayProgram里(或构造函数以外其它地方)new一个这种窗口,看看你继承的窗口、控件显示是不是对的。。。呵呵。。。
PHPWind好恶心。。。不想看这种界面。。。
离线土匪老黑
只看该作者 5楼 发表于: 2010-01-21
引用第2楼yangfanxing于2010-01-21 16:28发表的  :
调啊~
在ArrayProgram的构造函数里新建一个QXSRShip XX对象XX 应该指针,看看显示的是不是空白窗口~~~可能其它控件没show()出来~


为什么是ArrayProgram的构造函数里?不解啊
离线土匪老黑
只看该作者 4楼 发表于: 2010-01-21
引用第2楼yangfanxing于2010-01-21 16:28发表的  :
调啊~
在ArrayProgram的构造函数里新建一个QXSRShip对象(或堆操作),看看显示的是不是空白窗口~~~可能其它控件没show()出来~

好的,我试试
离线benbenmajia

只看该作者 3楼 发表于: 2010-01-21
如上,一句句调,控制台输出啊,看到哪了
安然.....
离线yangfanxing
只看该作者 2楼 发表于: 2010-01-21
调啊~
在ArrayProgram的构造函数里新建一个QXSRShip XX对象XX 应该指针,看看显示的是不是空白窗口~~~可能其它控件没show()出来~
[ 此帖被yangfanxing在2010-01-21 16:46重新编辑 ]
PHPWind好恶心。。。不想看这种界面。。。
离线土匪老黑
只看该作者 1楼 发表于: 2010-01-21
占楼集思广益啦,谢谢
快速回复
限100 字节
 
上一个 下一个