Russian Qt Forum
Май 09, 2024, 02:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не видно данные из QTextEdit  (Прочитано 4876 раз)
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();
 }

Буду очень благодарен за помощь!
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #1 : Ноябрь 11, 2011, 14:22 »

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

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Kostya
Гость
« Ответ #2 : Ноябрь 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

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

Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #3 : Ноябрь 12, 2011, 00:11 »

в main.cpp оставь только функцию int main(int argc, char *argv[]) (ну и требуемые инклуды), а второй main.cpp переименуй в mainwindow.cpp

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
iroln
Гость
« Ответ #4 : Ноябрь 13, 2011, 21:52 »

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

Код:
// это обычный тег code
Записан
Kostya
Гость
« Ответ #5 : Ноябрь 13, 2011, 22:42 »

Да действительно я C++ и Qt Creator не знаю, но очень хотел бы научится. Если поможете советом как это можно сделать и с чего начинать - буду очень благодарен!

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

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

Сообщений: 586


Просмотр профиля
« Ответ #6 : Ноябрь 14, 2011, 11:35 »

Смотри рабочий пример по твоей задаче.
Изучай С++ и Qt.
Записан
Kostya
Гость
« Ответ #7 : Ноябрь 14, 2011, 15:11 »

Огромное спасибо всем кто помогал мне разбираться с ошибками в моей программе!
А всем Вам очень признательный!

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

C уважением Kostya!!!
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #8 : Ноябрь 14, 2011, 15:55 »

как можно учить IDE? Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Kostya
Гость
« Ответ #9 : Ноябрь 14, 2011, 22:19 »

Простите меня за безграмотность, но к сожалению я не знаю что такое IDE
Записан
iroln
Гость
« Ответ #10 : Ноябрь 14, 2011, 22:37 »

Kostya, QtCreator - это IDE.
IDE - Интегрированная среда разработки.
Записан
Kostya
Гость
« Ответ #11 : Ноябрь 15, 2011, 12:17 »

Большое спасибо за подсказку!!!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.421 секунд. Запросов: 22.