crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Открытие вспомогательного окна
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
darkhac Дата 16.6.2011, 19:43
 
Цитата(Алексей1153 @ 16.6.2011, 20:20) *
слово "умерает" на самом деле пишется так: "умирает"


Спасибо, извиняюсь.
RazrFalcon Дата 16.6.2011, 18:05
  Как то так:

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



Алексей1153 Дата 16.6.2011, 17:20
  открыть модальное - exec()

слово "умерает" на самом деле пишется так: "умирает"
darkhac Дата 16.6.2011, 16:53
  Может кто-нибудь подсказать способ открыть вспомогательное окно. Есть окно А с кнопкой. по клику на кнопку должно открытся вспомогательно окно, с 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 умерает при выходе из функции(что логично). может кто-нибудь знает как можно дождаться закрытия вспомогательного окна?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.11.2021, 9:36