2012-02-19 4 views

答えて

1

すると、そのレイアウトと遊ぶようにしてください:

#include <QApplication> 
#include <QMessageBox> 
#include <QLineEdit> 
#include <QPushButton> 
#include <QLayout> 

    int main(int argc, char *argv[]) 
    { 
     QApplication app(argc, argv); 
     QMessageBox mb; 
     QLineEdit le; 
     QPushButton bt; 

     mb.layout()->addWidget(&bt); 
     mb.layout()->addWidget(&le); 

     mb.show(); 
     return app.exec(); 
    } 
+2

これは本当に厄介です。 –

+0

mm、試しましたが、QLineEditはボタンのようなもので、何もしません。 – ddacot

+0

ごめんみんな、私はあなたがそれが何か –

2

あなたはQDialogをサブクラス化し、メッセージボックスとして

searchdialog.h、それを使用することができます。

#ifndef SEARCHDIALOG_H 
#define SEARCHDIALOG_H 

#include <QDialog> 
#include <QLineEdit> 

class SearchDialog : public QDialog 
{ 
    Q_OBJECT 
public: 
    explicit SearchDialog(QWidget *parent = 0); 

    QString searchString() const; 

private: 
    QLineEdit *m_lineEdit; 
}; 

#endif // SEARCHDIALOG_H 

searchdialog.cpp

#include "searchdialog.h" 

#include <QVBoxLayout> 
#include <QPushButton> 
#include <QDialogButtonBox> 

SearchDialog::SearchDialog(QWidget *parent) : 
    QDialog(parent) 
{ 
    m_lineEdit = new QLineEdit(this); 

    QPushButton *searchButton = new QPushButton(tr("Search")); 
    searchButton->setDefault(true); 

    QPushButton *cancelButton = new QPushButton(tr("Cancel")); 

    QDialogButtonBox *buttonBox = new QDialogButtonBox(Qt::Horizontal); 
    buttonBox->addButton(searchButton, QDialogButtonBox::AcceptRole); 
    buttonBox->addButton(cancelButton, QDialogButtonBox::RejectRole); 

    connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); 
    connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); 

    QVBoxLayout *lt = new QVBoxLayout; 
    lt->addWidget(m_lineEdit); 
    lt->addWidget(buttonBox); 

    setLayout(lt); 
} 

QString SearchDialog::searchString() const 
{ 
    return m_lineEdit->text(); 
} 

メイン.cppファイル

#include <QtGui/QApplication> 
#include <QtGui/QMessageBox> 

#include <QLabel> 

#include "searchdialog.h" 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QLabel lbl; 
    SearchDialog *dialog = new SearchDialog(&lbl); 
    lbl.show(); 

    QString searchString; 

    if (dialog->exec()) { 
     searchString = dialog->searchString(); 
     lbl.setText(searchString); 
    } 

    return a.exec(); 
} 
関連する問題