Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Диалог, Передача параметра приложению 
:(
    Опции темы
RobRoj7779
Дата 22.11.2010, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



Здравствуйте, 
Помогите, пожалуйста.
Пытаюсь передать параметры в приложение.
Параметры выставляю в диалоговой форме.
Диалог вывожу. параметры меняю. Но в приложении они не отображаются.
Где ошибка? Не знаю.
Код

class DialogImpl : public QDialog, public Ui::Dialog
{
Q_OBJECT
public:
    DialogImpl( QWidget * parent = 0, Qt::WFlags f = 0 );
    int NbrRsh, NbrDvs;


Код

dialog = new DialogImpl(this);
if(dialog->exec()){
    int nbr1 = dialog->NbrRsh;     int nbr2 = dialog->NbrDvs;
    Ln1 = QString::fromLocal8Bit("Номер расширителя = ");
    Ln1 += QString::number(nbr1);
    lbInfo3->setText(Ln1);
    Ln2 = QString::fromLocal8Bit("Номер устройства = ");
    Ln2 += QString::number(nbr2);
    lbInfo4->setText(Ln2);
}

PM MAIL   Вверх
Khorynthium
Дата 23.11.2010, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 15.12.2007

Репутация: нет
Всего: нет



Эм, а ты значения установленные в диалоге точно в int NbrRsh, NbrDvs; заносишь?
PM MAIL   Вверх
RobRoj7779
Дата 23.11.2010, 04:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



Да, для проверки выводил эти значения на форму диалога.
PM MAIL   Вверх
borisbn
Дата 23.11.2010, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



RobRoj7779, покажи cpp-шник, в котором реализован DialogImpl


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
RobRoj7779
Дата 23.11.2010, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



Здравствуйте.
Код

#include <QtGui>
#include "dialogimpl.h"
//
DialogImpl::DialogImpl( QWidget * parent, Qt::WFlags f) 
    : QDialog(parent, f)
{
    setupUi(this);
}
// ------------------------------- Выбор номеров ---------------
void DialogImpl::set_Select()

    QString Ln;
    NbrRsh = dblSpnBx_NumbrRash->value();
    NbrDvs = dblSpnBx_NumbrDvs->value();
    Ln = QString::fromLocal8Bit("NbrRsh = ");
    Ln += QString::number(NbrRsh);
    Ln += QString::fromLocal8Bit("; NbrDvs = ");
    Ln += QString::number(NbrDvs);
    lbInfo->setText(Ln);
}

Код

#ifndef DIALOGIMPL_H
#define DIALOGIMPL_H
//
#include <QDialog>
#include "ui_dialog.h"
#include "fileStru.h"
//
class DialogImpl : public QDialog, public Ui::Dialog
{
Q_OBJECT
public:
    DialogImpl( QWidget * parent = 0, Qt::WFlags f = 0 );
    int NbrRsh, NbrDvs;

private slots:
    void set_Select();

};
#endif

PM MAIL   Вверх
SABROG
Дата 24.11.2010, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



А где ты вызываешь слот set_Select()?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
borisbn
Дата 24.11.2010, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



А где connect на set_Select() ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
RobRoj7779
Дата 24.11.2010, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



Здравствуйте. Мне нужно извиниться перед Вами. 
Видимо не достаточно полно описал задачу.
Реальная задача - это конфигуратор устройства с множеством настроек.
Настройки сгруппированы в закладки. Я решил задачу примитивно, без диалога.
Но по-моему в моем случае применение диалога для ввода дополнительных параметров было бы красиво и грамотно.
Применение диалога только осваиваю. Книга Бланшет особо не помогла. Поэтому обратился за профессиональной помощью к Вам.
Реальный код достаточно большой поэтому привожу тестовый, учебный вариант. 
В примере две закладки. При открытии второй выводится окно диалога (slot set_Select) При установке двух параметров int NbrRsh, NbrDvs;
в диалоге и закрытия диалога значения этих параметров должны отобразиться на второй закладке. Не отображаются.

Вопрос: А разве для модальной формы нужен conect?

Добавлено через 10 минут и 5 секунд
Извините. set_Select() в диалоге на кнопке выбора параметров.
Выбираю значения параметров при помощи SpinBox (value). Затем кнопка выбора, установки параметров.
Далее закрываю форму диалога.
В закладке в виде строки хотел отобразить выбранные параметры в диалоге. Их нет.
Помогите, пожалуйста разобраться.
PM MAIL   Вверх
SABROG
Дата 24.11.2010, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(RobRoj7779 @  24.11.2010,  19:06 Найти цитируемый пост)
Помогите, пожалуйста разобраться. 

К сожалению, без настоящих исходных кодов чем-то помочь затруднительно.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
RobRoj7779
Дата 25.11.2010, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



Здравствуйте.
Тестовый пример полный. Надеюсь на его примере научиться применять диалоги.
Код

#include "mainwindowimpl.h"
#include "dialogimpl.h"
//
MainWindowImpl::MainWindowImpl( QWidget * parent, Qt::WFlags f) 
    : QMainWindow(parent, f)
{
    setupUi(this);
}
// ----------------------- Выбор основной закладки -----------------------
void MainWindowImpl::pageSelSt()
{
    QString Ln1, Ln2;
    int nbr1;
    int nbr2;
    int indexSt;
    dialog = new DialogImpl(this);
    indexSt = tabWidgetStat->currentIndex();
    switch (indexSt){
        case 0: {
            Ln2 = QString::fromLocal8Bit("Выбрана основная закладка №1 ");
            lbInfo1->setText(Ln2);
            pageSelCh1();
            break;
        }
        case 1: {
            Ln2 = QString::fromLocal8Bit("Выбрана основная закладка №2 ");
            lbInfo1->setText(Ln2);
            pageSelCh2();
// -------------------------------------------------------
            if(dialog->exec()){
                nbr1 = dialog->NbrRsh;    nbr2 = dialog->NbrDvs;
            }
            Ln1 = QString::fromLocal8Bit("Номер расширителя = ");
            Ln1 += QString::number(nbr1);
            lbInfo3->setText(Ln1);
            Ln2 = QString::fromLocal8Bit("Номер устройства = ");
            Ln2 += QString::number(nbr2);
            lbInfo4->setText(Ln2);
//            delete dialog;
// -------------------------------------------------------
            break;
        }
    }
}
// ----------------------- Выбор дочерней закладки #1 --------------------
void MainWindowImpl::pageSelCh1()
{
    QString Ln2;
    int indexCh1;
    
    indexCh1 = tabWidgetChild1->currentIndex();
    switch (indexCh1){
        case 0: {
            Ln2 = QString::fromLocal8Bit("Выбрана дочерняя закладка №1 ");
            lbInfo2->setText(Ln2);
            break;
        }
        case 1: {
            Ln2 = QString::fromLocal8Bit("Выбрана дочерняя закладка №2 ");
            lbInfo2->setText(Ln2);
            break;
        }
    }
}
// ----------------------- Выбор дочерней закладки #2 --------------------
void MainWindowImpl::pageSelCh2()
{
    QString Ln2;
    int indexCh2;
    indexCh2 = tabWidgetChild2->currentIndex();
    switch (indexCh2){
        case 0: {
            Ln2 = QString::fromLocal8Bit("Выбрана дочерняя закладка №1 ");
            lbInfo2->setText(Ln2);
            break;
        }
        case 1: {
            Ln2 = QString::fromLocal8Bit("Выбрана дочерняя закладка №2 ");
            lbInfo2->setText(Ln2);
            break;
        }
    }
}
//

Код

//
#include <QMainWindow>
class DialogImpl;
#include "ui_mainwindow.h"
//
class MainWindowImpl : public QMainWindow, public Ui::MainWindow
{
Q_OBJECT
public:
    MainWindowImpl( QWidget * parent = 0, Qt::WFlags f = 0 );
    DialogImpl *dialog;
private slots:
    void pageSelSt();
    void pageSelCh1();
    void pageSelCh2();
};
#endif

PM MAIL   Вверх
SABROG
Дата 25.11.2010, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(RobRoj7779 @  25.11.2010,  07:34 Найти цитируемый пост)
Тестовый пример полный.

К сожалению не полный. Мне нужен код, который я смогу скомпилировать и запустить.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0503 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.