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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QPushButton isChecked()  (Прочитано 9587 раз)
Novicheck
Гость
« : Апрель 29, 2015, 16:26 »

подскажите кто в теме - как реализовать условие нажатия кнопки?
Код:
    if (btn_spb->isChecked(true))
    {
        QString city = settings->value("2").toString();
    }
isChecked() не хочет работать
Записан
Bepec
Гость
« Ответ #1 : Апрель 29, 2015, 16:32 »

Учим C++. Читайте книжки умные про операторы сравнения Веселый

PS
Код:
btn_spb->isChecked() == true
Записан
Novicheck
Гость
« Ответ #2 : Апрель 29, 2015, 16:34 »

ирония понятна, но и это не работает - испробовано
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #3 : Апрель 29, 2015, 16:49 »

ирония понятна, но и это не работает - испробовано
Значит ты в очередной раз что то делаешь не так.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #4 : Апрель 29, 2015, 16:56 »

ирония понятна, но и это не работает - испробовано
Должно сработать так же как и:
Код
C++ (Qt)
if (btn_spb->isChecked())
...

Записан

Novicheck
Гость
« Ответ #5 : Апрель 29, 2015, 17:08 »

Kurles - самые "эффективные" ответы на форуме...
Записан
Novicheck
Гость
« Ответ #6 : Апрель 29, 2015, 17:15 »

gil9red, понимаю что должен сработать, но что то не клеится...
полный код функции:
Код:
    settings = new QSettings("data_map.ini", QSettings::IniFormat);
    if (btn_spb->isChecked())
    {
        QString city = settings->value("2").toString();
    }
    QMessageBox::information(this, tr("Описание объекта..."), city);
Записан
Bepec
Гость
« Ответ #7 : Апрель 29, 2015, 18:04 »

Удивительные способности у новичков - давать абсолютно ненужную информацию и ждать ответов на невысказанные вопросы Веселый

1) вы что то делаете неправильно.
2) не пытайтесь сразу сделать сложное
3) у вас city в локальной области видимости и умирает покидая её.
4) вы привели кусок кода, а должны были привести весь код и ошибку компилятора, который ругается скорее всего на undefined Улыбающийся
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #8 : Апрель 29, 2015, 18:05 »

gil9red, понимаю что должен сработать, но что то не клеится...
полный код функции:
Код:
    settings = new QSettings("data_map.ini", QSettings::IniFormat);
    if (btn_spb->isChecked())
    {
        QString city = settings->value("2").toString();
    }
    QMessageBox::information(this, tr("Описание объекта..."), city);

У вас там компилятор матерится, потому что переменая city находится в другой области видимости, или у вас 2 переменные city, должно быть так:
Код
C++ (Qt)
   settings = new QSettings("data_map.ini", QSettings::IniFormat);
   if (btn_spb->isChecked())
   {
       QString city = settings->value("2").toString();
       QMessageBox::information(this, tr("Описание объекта..."), city);
   }
 

Или так:
Код
C++ (Qt)
   settings = new QSettings("data_map.ini", QSettings::IniFormat);
   QString city;
 
   if (btn_spb->isChecked())
       city = settings->value("2").toString();
 
   QMessageBox::information(this, tr("Описание объекта..."), city);
 


UPD. Bepec меня опередил Улыбающийся
Записан

Bepec
Гость
« Ответ #9 : Апрель 29, 2015, 18:12 »

Краткость сестра таланта. Хотя все сообщения можно было уложить в
Цитировать
Учи C++.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #10 : Апрель 29, 2015, 19:24 »

Учи C++.

Чему он может его научить Непонимающий
Записан
Bepec
Гость
« Ответ #11 : Апрель 29, 2015, 19:46 »

Не объявлять переменную в локальной зоне видимости и применять её после закрытия зоны Веселый
Записан
Novicheck
Гость
« Ответ #12 : Май 02, 2015, 18:15 »

да, с зоной видимости вы правы однозначно - я накосячил, но "isChecked" все равно не срабатывает...
Код:
#include "map.h"

#include <QTextCodec>

map::map(QWidget *parent)
    : QWidget(parent)
{

}

/*! главная форма */
void map::iniMap()
{
    QTextCodec *codec = QTextCodec::codecForName("CP1251");
    QTextCodec::setCodecForTr(codec);
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForLocale(codec);
    setWindowTitle(tr("Карта Российской Федерации"));
    resize(1200, 700);

    vblayout = new QVBoxLayout();
    scrollArea = new QScrollArea();
    scrolVBlayout = new QVBoxLayout;
    label = new QLabel;
    vblayout->addWidget(scrollArea);
    scrollArea->setLayout(scrolVBlayout);
    scrollArea->setWidget(label);
    scrollArea->setWidgetResizable(true);
    setLayout(vblayout);
    label->setPixmap(QPixmap::fromImage(QImage("map_8000.jpg")));
    label->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
    label->setScaledContents(true);
    gl = new QGridLayout;

    btn_spb = new QPushButton(tr("Санкт-Петербург"));
    btn_spb->setFlat(true);
    btn_spb->setStyleSheet("font: 12pt");
    gl->addWidget(btn_spb, 3, 2, Qt::AlignCenter);

    btn_msc = new QPushButton(tr("Москва"));
    btn_msc->setFlat(true);
    btn_msc->setStyleSheet("font: 12pt");
    gl->addWidget(btn_msc, 4, 2, Qt::AlignCenter);

    connect(btn_spb, SIGNAL(clicked()), SLOT(message_slot()));
}

/*! вызов сообщения */
void map::message_slot()
{
    settings = new QSettings("data_map.ini", QSettings::IniFormat);
    QTextCodec *codec = QTextCodec::codecForName("CP1251");
    settings->setIniCodec(codec);
//    QString city;
    if (btn_spb->isChecked())
    {
        QString city = settings->value("2").toString();
        QMessageBox::information(this, tr("Описание объекта..."), city);
    }

}

map::~map()
{
   
}
в чем может быть проблема?
Записан
torwig
Самовар
**
Offline Offline

Сообщений: 134



Просмотр профиля
« Ответ #13 : Май 02, 2015, 18:46 »

Предположу, что кнопке нужно задать, чтобы она могла быть checked/unchecked:
Код:
btn_spb->setCheckable(true);
По умолчанию, кнопка not checkable.
Записан
Bepec
Гость
« Ответ #14 : Май 03, 2015, 00:20 »

Парень наверно просто не понимает принципа работы Улыбающийся

Novicheck напиши простыми словами что ты хочешь получить: аля "Пользователь тык тык в кнопочку, кнопочка ага ага и программа пиу пиу" Улыбающийся
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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