crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QPushButton попытки заблокировать кнопку., QPushButton попытки заблокировать кнопку.
Гость_metronix_*
сообщение 1.5.2008, 20:52
Сообщение #1





Гости








    


Добрый день.. столкнулся с маленькой проблемой. Трубется заблокировать кнопку сразу после нажатия, обработать некоторую операцию а потом сделать кнопку свова доступной).

Создал кнопку

QPushButton* b_ok = new QPushButton("Ok");

//Замкнул на слот
connect(b_ok, SIGNAL(clicked()), this, SLOT(obrabotka()));

//Написал слот-функцию,
void obrabotka()
{
             b_ok->setEnabled(false);
// здесь будут операции
             b_ok->setEnabled(true);

}

но при каких либо попытках сделать кнопку ненажимаемой ничего не получается=(
Кто-нибудь подскажите в чём может быть проблема?? Если писать b_ok->setEnabled(false); например в конструкторе то всё замечательно работает... неужели нельзя изменять объект которы послужил источником сигнала??

Также возник вопрос.. а какие операции необходимо произвести чтобы перенести приложение на другую машину? Если есть возможность скиньте ссылочку где можно почитать про это.
Заранее спасибо.
Причина редактирования: пользуйтесь тэгом cod=cpp
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 2.5.2008, 9:08
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Вот пример накидал
main.cpp:
#include <QtGui>
#include "class.h"

int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); // Для функций перевода tr()
    
  CTest window;
    
    window.show();

    return app.exec();
}

class.h:
#ifndef CLASS_H
#define CLASS_H

#include <QtGui>

class CTest: public QWidget
{
    Q_OBJECT

public:
    CTest(QWidget *parent = 0);
    
    QPushButton* b1;
    QPushButton* b2;
    QVBoxLayout *layout;

public slots:
    void OnClic(bool check);
};

#endif //CLASS_H

class.cpp:
#include <QtGui>
#include "class.h"

CTest::CTest(QWidget *parent): QWidget(parent)
{
    b1 = new QPushButton(tr("Нажми меня"),this);
    b2 = new QPushButton(tr("Нажми меня"),this);
    layout = new QVBoxLayout(this);
    
    layout->addWidget(b1);
    layout->addWidget(b2);
    
    
    connect(b1, SIGNAL(clicked(bool)),
            this, SLOT(OnClic(bool)));
    
    connect(b2, SIGNAL(clicked(bool)),
            this, SLOT(OnClic(bool)));
}

void CTest::OnClic(bool /*check*/)
{
    // Для тестирования слота
    //QMessageBox::information(this, tr("Слот"), tr("кнопка нажата"),    QMessageBox::Ok);
    
    if (b1->isEnabled())
    {
        b1->setEnabled(false);
        b2->setEnabled(true);
    }
    else
    {
        b1->setEnabled(true);
        b2->setEnabled(false);    
    }
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 9.11.2024, 15:09