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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Просьба помочь  (Прочитано 5107 раз)
Piton4eg
Гость
« : Август 06, 2009, 15:58 »

Не знаю может не в ту тему пишу, но связано с созданием пользовательского интерфейса.
Суть в том, что мне необходимо создать программу которая считывает из файла данные и отображает полученную картинку, саму программу отображения рисунка я написал, но при создании интерфейса программы возникают сложности, скорее всего проблема с сигналами-слотами, но т.к. я ещё мало пользуюсь этой программой то не могу определить, если кто знает помогите пожалуйста

содержимое файла main.cpp
Цитировать
#include <QtGui/QApplication>
#include "ogl_paint.h"
#include "ui_prosto.h"
#include "pForm.h"
#include <QSpacerItem>

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

   QHBoxLayout * phLay;
   QVBoxLayout * pvLay;
   ogl_paint * pwOGL;
   pOGLForm * pf;
   QSpacerItem * psp;

   phLay = new QHBoxLayout;
   pvLay = new QVBoxLayout;
   pwOGL = new ogl_paint;
   pwOGL->setMinimumSize(QSize(500,500));
   psp = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
   pf = new pOGLForm;

   phLay->addWidget(pwOGL);
   pvLay->addWidget(pf);
   pvLay->addItem(psp);

   phLay->addLayout(pvLay);

   w.setLayout(phLay);

   QObject::connect(pf->pb_exit, SIGNAL(clicked()), &a, SLOT(quit()));
   QObject::connect(pf->pb_paint, SIGNAL(clicked()), pwOGL, SLOT(SlotPaint()));
   QObject::connect(pf->pb_path, SIGNAL(clicked()), pwOGL, SLOT(SlotLoad(QString)));
   QObject::connect(pf->chb_temp, SIGNAL(stateChanged(int)), pwOGL, SLOT(SlotTemp(int)));
   QObject::connect(pf->chb_set, SIGNAL(stateChanged(int)), pwOGL, SLOT(SlotSet(int)));
   QObject::connect(pf->chb_line_tok, SIGNAL(stateChanged(int)), pwOGL, SLOT(SlotLines(int)));


   w.show();

   return a.exec();

}

Во вложении файлы, в которых как раз основные функции, используемые в программе

Кто может помочь буду очень признателен, т.к. скоро сдавать отчет по практике, а я никак не могу понять в чем именно проблема
Записан
alex12
Гость
« Ответ #1 : Август 14, 2009, 15:01 »

Я смотрю, что еще ui-файл используется.
Цитировать
#include "ui_prosto.h"
Обычно делается отдельный виджет типа MainWindow, а не пишется все в main().

Если задача все еще актуальна, то выложи архив всего проекта.
« Последнее редактирование: Август 14, 2009, 15:04 от alex12 » Записан
Piton4eg
Гость
« Ответ #2 : Август 24, 2009, 13:04 »

Цитировать
Я смотрю, что еще ui-файл используется.
да используется ui-файл, по крайней мере мне говорили делать так)

Цитировать
Если задача все еще актуальна, то выложи архив всего проекта.
Задача всё ещё актуальна. Архив по ссылке http://ifolder.ru/13679902
Записан
ритт
Гость
« Ответ #3 : Август 24, 2009, 13:12 »

я так понимаю, "саму программу отображения рисунка я написал" следует читать как "саму программу отображения рисунка мне написали"
Записан
Piton4eg
Гость
« Ответ #4 : Август 24, 2009, 14:03 »

нет, писал я, просто некоторые моменты которые я не понимал, мне объяснял мой руководитель, т.к. у меня это первый опыт работы с Qt
если бы мне написали, то я бы аналогично и с интерфейсом поступил
« Последнее редактирование: Август 24, 2009, 14:08 от Piton4eg » Записан
ритт
Гость
« Ответ #5 : Август 24, 2009, 14:25 »

пока что пост я читаю как "соберите мою программу и скажите что в ней не работает"...
опиши проблему и задай вопрос.
Записан
alex12
Гость
« Ответ #6 : Август 24, 2009, 14:55 »

Общая структура проекта GUI сделана совсем криво.

Проект не собирается т.к. передача имени открываемого файла сделана ... ээээ ... совсем неправильно.
В тексте виджета делается ссылка на форму (о которой сам виджет ничего не знает).

Не ломая весь проект в целом, я смог его починить только богопротивным методом добавления глобального указателя
на QLineEdit из формы. По-хорошему нужно переделывать весь GUI.

Естественно, я не смог проверить т.к. в проекте нет файла для обработки.

Добавлено:

main.cpp:
  QLineEdit *le_filename;
  le_filename = pf->le_path;

ogl_paint.cpp:
  #include <QLineEdit>
  extern QLineEdit *le_filename;
  QString    F=le_filename->text();

Вот diff-файл. Надеюсь разбирешься.

Код:
diff --git a/main.cpp b/main.cpp
index 8de1d3b..9475502 100644
--- a/main.cpp
+++ b/main.cpp
@@ -4,6 +4,7 @@
 #include "pForm.h"
 #include <QSpacerItem>
 
+QLineEdit *le_filename;
 
 int main(int argc, char *argv[])
 {
@@ -24,7 +25,7 @@ int main(int argc, char *argv[])
    psp = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
    pf = new pOGLForm;
 
-
+   le_filename = pf->le_path;
 
 
    phLay->addWidget(pwOGL);
diff --git a/ogl_paint.cpp b/ogl_paint.cpp
index 28e70cc..496b203 100644
--- a/ogl_paint.cpp
+++ b/ogl_paint.cpp
@@ -7,6 +7,8 @@
 #include <qcolor.h>
 #include <math.h>
 
+#include <QLineEdit>
+
 ogl_paint::ogl_paint(QWidget *pwgt/*= 0*/) : QGLWidget(pwgt)
 {
    //load();
@@ -91,7 +93,9 @@ void ogl_paint::SlotLines(int nLines)
 }
 void ogl_paint::SlotLoad()
 {
-    QString    F=pf->le_path->text();
+    extern QLineEdit *le_filename;
+
+    QString    F=le_filename->text();
     PathFile=F;
 
     QFile file(PathFile);
Записан
Piton4eg
Гость
« Ответ #7 : Август 24, 2009, 15:26 »

2alex12
большое спасибо, понял в чём косяк, буду в этом ковыряться

а то что общая структура сделана криво, мне это уже говорили, но по другому к сожалению не умею Грустный

спасибо
Записан
alex12
Гость
« Ответ #8 : Август 24, 2009, 16:12 »

См. вложение к посту. Там я переделал GUI по своему вкусу.

Функционал сделал только кнопка "Выход" и "Загрузить". Посмотри что там к чему.

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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