Название: Сигналы и слоты
Отправлено: 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 сведения об ошибке. Что я делаю не так? Спасибо.
Название: Re: Сигналы и слоты
Отправлено: ddrtn от Январь 12, 2012, 08:47
plocalGroup - локальная переменная в конструкторе. в ButtibClicked она не видна. объявите ее членом класса
Название: Re: Сигналы и слоты
Отправлено: karpenko1989 от Январь 12, 2012, 08:59
plocalGroup - локальная переменная в конструкторе. в ButtibClicked она не видна. объявите ее членом класса
Не могли бы вы пояснить как это сделать?
Название: Re: Сигналы и слоты
Отправлено: Bepec от Январь 12, 2012, 09:19
Сделайте свои кнопки полями класса. В *.h файле напишите private: QPushButton * plocalGroup; (не забудьте об инклудах ^^) В *.cpp замените QPushButton *plocalGroup = new QPushButton(QString::fromLocal8Bit("Локальная группа")); на plocalGroup = new QPushButton(QString::fromLocal8Bit("Локальная группа"));
Название: Re: Сигналы и слоты
Отправлено: karpenko1989 от Январь 12, 2012, 10:08
Огромное спасибо, все заработало
Название: Re: Сигналы и слоты
Отправлено: Bepec от Январь 12, 2012, 10:19
Учтите на будущее. Поля, описанные в доступны из любой функции этого класса. А поля, описанные в доступны отовсюду.
|