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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сигналы и слоты  (Прочитано 2804 раз)
karpenko1989
Гость
« : Январь 12, 2012, 08:37 »

Здравствуйте, имеется код:
Код:
#include <QtGui>

#include "trendtop.h"

TrendTop::TrendTop()
{
//Добавляем верхние кнопки
    QPushButton *pselectParams = new QPushButton(QString::fromLocal8Bit("Выбор параметров"));
    QPushButton *plocalGroup = new QPushButton(QString::fromLocal8Bit("Локальная группа"));
    QPushButton *phalfHour = new QPushButton(QString::fromLocal8Bit("30 минут"));
    QPushButton *ptvelveHour = new QPushButton(QString::fromLocal8Bit("12 часов"));
    QPushButton *poneDay = new QPushButton(QString::fromLocal8Bit("1 сутки"));
    QPushButton *pthreeDay = new QPushButton(QString::fromLocal8Bit("3 суток"));
    QPushButton *potherInterval = new QPushButton(QString::fromLocal8Bit("Другой"));
    QPushButton *psaveIntoFile = new QPushButton(QString::fromLocal8Bit("Сохранить в файл"));
    QLabel *psetInterval = new QLabel(QString::fromLocal8Bit("Установить интервал"));

    connect(pselectParams, SIGNAL(clicked()), SLOT(ButtonClicked()));

//Компонуем верхние кнопки по горизонтали
    QHBoxLayout* btnTopLayout = new QHBoxLayout;
    btnTopLayout->addWidget(pselectParams);
    btnTopLayout->addWidget(plocalGroup);
    btnTopLayout->addSpacing(100);
    btnTopLayout->addWidget(psetInterval);
    btnTopLayout->addWidget(phalfHour);
    btnTopLayout->addWidget(ptvelveHour);
    btnTopLayout->addWidget(poneDay);
    btnTopLayout->addWidget(pthreeDay);
    btnTopLayout->addWidget(potherInterval);
    btnTopLayout->addSpacing(30);
    btnTopLayout->addWidget(psaveIntoFile);

   QWidget* wgtTop = new QWidget;
   wgtTop->setLayout(btnTopLayout);
   wgtTop->show();

}



//Слоты для кнопок

void TrendTop::ButtonClicked()
{
 plocalGroup->setVisible(false);

}

В нем мне необходимо, к примеру, по нажатии на кнопку "Выбор параметров" сделать невидимой кнопку "Локальная группа".
Программа компилируется, но если нажать на кнопку "Выбор параметров" завершается с ошибкой:

*.exe - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства.Передайте Microsoft сведения об ошибке.

Что я делаю не так? Спасибо.
Записан
ddrtn
Гость
« Ответ #1 : Январь 12, 2012, 08:47 »

plocalGroup - локальная переменная в конструкторе.
в ButtibClicked она не видна.
объявите ее членом класса
Записан
karpenko1989
Гость
« Ответ #2 : Январь 12, 2012, 08:59 »

plocalGroup - локальная переменная в конструкторе.
в ButtibClicked она не видна.
объявите ее членом класса
Не могли бы вы пояснить как это сделать?
Записан
Bepec
Гость
« Ответ #3 : Январь 12, 2012, 09:19 »

Сделайте свои кнопки полями класса.

В *.h файле напишите
Код:
private:
QPushButton * plocalGroup;
(не забудьте об инклудах ^^)

В *.cpp замените
Код:
QPushButton *plocalGroup = new QPushButton(QString::fromLocal8Bit("Локальная группа"));
на
Код:
plocalGroup = new QPushButton(QString::fromLocal8Bit("Локальная группа"));
Записан
karpenko1989
Гость
« Ответ #4 : Январь 12, 2012, 10:08 »

Огромное спасибо, все заработало
Записан
Bepec
Гость
« Ответ #5 : Январь 12, 2012, 10:19 »

Учтите на будущее.

Поля, описанные в
Код:
private:
доступны из любой функции этого класса.

А поля, описанные в
Код:
public:
доступны отовсюду.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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