[Qt-interest] (no subject)

Oliver Demetz forenbeitraege at oliverdemetz.de
Mon May 25 09:01:11 CEST 2009


Gan Xiebin schrieb:
> Hi,all.
> 
> I got a problem when i use setLayout to complete my " find dialog".
> 
> code:
> 
> // AutoSearchDlg.h
> class AutoSearchDlg : public QDialog
> {
>      Q_OBJECT
> 
> public:
>      AutoSearchDlg(QWidget *parent = 0);
> public slots:
>      void SetupDialog();
> 
> private:
>      QLabel *textLabel;
>      QLabel *ipLabel;
>      QLineEdit *ipLineEdit;
>      QDialogButtonBox *buttonBox;
>      QPushButton *findButton;
> 
> QGridLayout *buttomLayout;
> QVBoxLayout *mainLayout;
> 
> };
> 
> 
> // AutoSearchDlg.cpp
> AutoSearchDlg::AutoSearchDlg(QWidget *parent)
>      : QDialog(parent)
> {
> 
> }
> 
> void AutoSearchDlg::SetupDialog()
> {
> 
>      textLabel = new QLabel(tr("Please input IP address and mask for
> network search.\n"));
> 
>      ipLabel = new QLabel(tr("IP Address:"));
>      ipLineEdit = new QLineEdit;
>      ipLabel->setBuddy(ipLineEdit);
> 
>      findButton = new QPushButton(tr("&Find"));
>      findButton->setDefault(true);
> 
> 
>      buttomLayout = new QGridLayout;
>      buttomLayout->addWidget(ipLabel, 0, 0);
>      buttomLayout->addWidget(ipLineEdit, 0, 1);
>      buttomLayout->addWidget(buttonBox,2,2);
> 
>      mainLayout = new QVBoxLayout;
>      mainLayout->addWidget(textLabel);
>      mainLayout->addLayout(buttomLayout);
> 
>      setLayout(mainLayout);
> 
>      exec();
> 
> }
> 
> 
> 
> // mainwindwo.cpp
> #include "AutoSearchDlg.h"
> 
> MainWindow::MainWindow()
> {
> // create munu etc...
>     AutoSearchAct = new QAction(tr("Auto Search"), this);
>     connect(AutoSearchAct, SIGNAL(triggered()), new AutoSearchDlg(),
> SLOT(SetupDialog()));
> 
> }
> 
> 
> 
>  It's fined when i first triggered the "search" action on my main window,
> but after that, when i triggered that  action, the warning message
> shows like that..
> ----------
> QWidget::setLayout: Attempting to set QLayout "" on AutoSearchDlg "",
> which already has a layout
> ------------
> 
> What can I do?

Export the creation of your gui prts into the constructor:
AutoSearchDlg::AutoSearchDlg(QWidget *parent)
 >      : QDialog(parent)
 > {
 > textLabel = new QLabel(tr("Please input IP address and mask for
 > network search.\n"));
 >
 >      ipLabel = new QLabel(tr("IP Address:"));
 >      ipLineEdit = new QLineEdit;
 >      ipLabel->setBuddy(ipLineEdit);
 >
 >      findButton = new QPushButton(tr("&Find"));
 >      findButton->setDefault(true);
 >
 >
 >      buttomLayout = new QGridLayout;
 >      buttomLayout->addWidget(ipLabel, 0, 0);
 >      buttomLayout->addWidget(ipLineEdit, 0, 1);
 >      buttomLayout->addWidget(buttonBox,2,2);
 >
 >      mainLayout = new QVBoxLayout;
 >      mainLayout->addWidget(textLabel);
 >      mainLayout->addLayout(buttomLayout);
 >
 >      setLayout(mainLayout);
 > }
 >
 > void AutoSearchDlg::SetupDialog()
 > {
 >
 >
 >
 >      exec();
 >
 > }

regards



More information about the Qt-interest-old mailing list