Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Открытие вспомогательного окна
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
darkhac
Может кто-нибудь подсказать способ открыть вспомогательное окно. Есть окно А с кнопкой. по клику на кнопку должно открытся вспомогательно окно, с LineEdit и кнопкой, после нажатия на кнопку вспомогательного окна текст должен передаться в А

class HelpWindow : QDialog{...};

class A: QWidget
{
...
public slots:
    void ShowHelpWindow()
    {
          HelpWindow it(this);
          QObject::connect(&it,SIGNAL(confirmed(QString& text)), this, SLOT(UserConfirmHelp(QString& text)));
          it.show()
    }
    void UserConfirmHelp(QString& text)
    {
          this->MainLabel.setText(text);
    }
...
};



вот таким методом it умерает при выходе из функции(что логично). может кто-нибудь знает как можно дождаться закрытия вспомогательного окна?
Алексей1153
открыть модальное - exec()

слово "умерает" на самом деле пишется так: "умирает"
RazrFalcon
Как то так:

example.pro
Раскрывающийся текст
QT      += core gui

TARGET   = example

TEMPLATE = app

SOURCES += main.cpp \
           second.cpp

HEADERS += main.h \
           second.h

main.cpp
Раскрывающийся текст
#include "main.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    First w;
    w.show();

    return a.exec();
}

First::First(QWidget *parent) : QDialog(parent)
{
    label = new QLabel("Hi",this);
    button = new QPushButton("Press",this);
    QVBoxLayout *layout = new QVBoxLayout(this);

    connect(button,SIGNAL(clicked()),this,SLOT(button_clicked()));

    layout->addWidget(label);
    layout->addWidget(button);

    setWindowTitle("First");
    setLayout(layout);
    resize(200,100);
}

void First::button_clicked()
{
    second = new Second(this);
    second->show();
    button->setEnabled(false);
}

void First::setMyText(const QString &text)
{
    label->setText(text);
}

main.cpp
Раскрывающийся текст
#ifndef MAIN_H
#define MAIN_H

#include <QtGui>
#include <QtCore>

#include "second.h"

class Second;

class First : public QDialog
{
    Q_OBJECT

public:
    explicit First(QWidget *parent = 0);
    void setMyText(const QString &text);

private:
    QPushButton *button;
    QLabel *label;
    Second *second;

private slots:
    void button_clicked();
};

#endif // MAIN_H

second.cpp
Раскрывающийся текст
#include "second.h"

Second::Second(First *dialog, QWidget *parent) : QDialog(parent)
{
    first = dialog;

    lineEdit = new QLineEdit(this);
    button = new QPushButton("Send",this);
    QVBoxLayout *layout = new QVBoxLayout(this);

    connect(button,SIGNAL(clicked()),this,SLOT(button_clicked()));

    layout->addWidget(lineEdit);
    layout->addWidget(button);

    setWindowTitle("Second");
    setLayout(layout);
    resize(200,100);
}

void Second::button_clicked()
{
    first->setMyText(lineEdit->text());
}

second.h
Раскрывающийся текст
#ifndef SECOND_H
#define SECOND_H

#include <QtGui>
#include <QtCore>

#include "main.h"

class First;

class Second : public QDialog
{
    Q_OBJECT

public:
    explicit Second(First *dialog, QWidget *parent = 0);

private:
  First *first;
  QLineEdit *lineEdit;
  QPushButton *button;

private slots:
    void button_clicked();
};

#endif // SECOND_H



darkhac
Цитата(Алексей1153 @ 16.6.2011, 20:20) *
слово "умерает" на самом деле пишется так: "умирает"


Спасибо, извиняюсь.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.