Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Kostya от Ноябрь 11, 2011, 14:00



Название: Не видно данные из QTextEdit
Отправлено: Kostya от Ноябрь 11, 2011, 14:00
Здраствуйте!
Хочу попросить совет по QT 4.5.0
Пишу простую программу состоящую из QPushButton, QMessageBox, QTextEdit. Данная программа должна при нажатии на кнопку выводить сообщения QMessageBox с текстом введенном в QTextEdit. Проблема заключается в том, что не видно текст в QMessageBox и при закрытии программы выдается ошибка.

Вот код моей программы:


#include <QApplication>
#include <QFont>
#include <QPushButton>
#include <QMessageBox>
#include <QString>
#include <QDialog>
#include <QTextEdit>
#include <QString>
#include <QWidget>
#include <QVBoxLayout>
#include <QtGlobal>


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

     QTextEdit textedit;

     QString str=textedit.toPlainText();

     QMessageBox msgBox;
     msgBox.setText(str);


     QPushButton open("Open");
     open.resize(75, 30);
     open.setFont(QFont("Times", 18, QFont::Bold));

      QVBoxLayout layout;
      layout.addWidget(&textedit);
      layout.addWidget(&open);

      QWidget window;
      window.setLayout(&layout);



     QObject::connect(&open, SIGNAL(clicked()), &msgBox, SLOT(open()));
     window.show();
     return app.exec();
 }

Буду очень благодарен за помощь!


Название: Re: Не видно данные из QTextEdit
Отправлено: kambala от Ноябрь 11, 2011, 14:22
тут текст месседжбокса читается сразу из текстэдита, до появления формы, а там находится пустая строка. для того, чтобы месседжбокс отображал любую введенную строку, надо писать свой класс виджета и добавить в него слот, который надо соединить с сигналом clicked() своей кнопки и в котором будет код:
Код
C++ (Qt)
void MyClass::showMessageBox()
{
   // просто показ текста лучше выполнять статической функцией
   QMessageBox::information(this, "my title", textedit->toPlainText());
}

а какая ошибка вылазит при завершении?


Название: Re: Не видно данные из QTextEdit
Отправлено: Kostya от Ноябрь 12, 2011, 00:01
Попробовал внести изменения в свой код и у меня получилось два файла main.cpp и mainwindow.h
Вот код нового файла main.cpp:

#include <QApplication>
#include <QFont>
#include <QPushButton>
#include <QMessageBox>
#include <QString>
#include <QDialog>
#include <QTextEdit>
#include <QString>
#include <QWidget>
#include <QVBoxLayout>
#include <QtGlobal>

#include "mainwindow.h"

class MyClass : public QWidget
{
   public:
      MyClass(QWidget *parent = 0);
)

MyClass::MyClass(QWidget *parent=0)
        :QWidget(parent)
{
  QTextEdit textedit;
  QMessageBox msgBox;
  QPushButton open("Open");
  open.resize(75, 30);
  open.setFont(QFont("Times", 18, QFont::Bold));
  QVBoxLayout layout = new QVBoxLayout;
  layout.addWidget(&textedit);
  layout.addWidget(&open);
  setLayout(layout);
  connect(&open, SIGNAL(clicked()), &msgBox, SLOT(showMessageBox()));
}

void MyClass::showMessageBox()
{
    QMessageBox::information(this, "my title", textedit->toPlainText());
}

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyClass widget;
widget.show();
return app.exec();
};

И вот код mainwindow.h


#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWidget>

class QMessageBox;

class MyClass : public QWidget
{
    Q_OBJECT

public:
    MyClass (QWidget *parent=0);

    int value() const;

public slots:
    void showMessageBox();

signals:
    void clicked();

private:
  QMessageBox *msgBox;
};


#endif // MAINWINDOW_H

При компиляции QT  выдает следующие ошибки:

redefinition of 'class MyClass'
previos definition of 'class MyClass'
expected '}' at end of input
expected unquafied-id at end of input

Прошу помочь разобраться с моими ошибками. Заранее благодарен!!!



Название: Re: Не видно данные из QTextEdit
Отправлено: kambala от Ноябрь 12, 2011, 00:11
в main.cpp оставь только функцию int main(int argc, char *argv[]) (ну и требуемые инклуды), а второй main.cpp переименуй в mainwindow.cpp

и вообще займись изучением C++


Название: Re: Не видно данные из QTextEdit
Отправлено: iroln от Ноябрь 13, 2011, 21:52
Не в тему, конечно, но уважайте же людей, Kostya, используйте хотя бы тэг code:
Код
C++ (Qt)
// это тег code С++

Код:
// это обычный тег code


Название: Re: Не видно данные из QTextEdit
Отправлено: Kostya от Ноябрь 13, 2011, 22:42
Да действительно я C++ и Qt Creator не знаю, но очень хотел бы научится. Если поможете советом как это можно сделать и с чего начинать - буду очень благодарен!

А если еще поможете найти ошибки в программе буду благодарен в двойне!!

Тег code постараюсь употреблять (прошу прощения за неудобства).
С уважением Kostya!


Название: Re: Не видно данные из QTextEdit
Отправлено: Mikhail от Ноябрь 14, 2011, 11:35
Смотри рабочий пример по твоей задаче.
Изучай С++ и Qt.


Название: Re: Не видно данные из QTextEdit
Отправлено: Kostya от Ноябрь 14, 2011, 15:11
Огромное спасибо всем кто помогал мне разбираться с ошибками в моей программе!
А всем Вам очень признательный!

Действительно надо учить C++ и QTCreator!!!!

C уважением Kostya!!!


Название: Re: Не видно данные из QTextEdit
Отправлено: kambala от Ноябрь 14, 2011, 15:55
как можно учить IDE? :)


Название: Re: Не видно данные из QTextEdit
Отправлено: Kostya от Ноябрь 14, 2011, 22:19
Простите меня за безграмотность, но к сожалению я не знаю что такое IDE


Название: Re: Не видно данные из QTextEdit
Отправлено: iroln от Ноябрь 14, 2011, 22:37
Kostya, QtCreator - это IDE.
IDE - Интегрированная среда разработки. (http://ru.wikipedia.org/wiki/Интегрированная_среда_разработки)


Название: Re: Не видно данные из QTextEdit
Отправлено: Kostya от Ноябрь 15, 2011, 12:17
Большое спасибо за подсказку!!!