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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: как сделать объект QDateTimeEdit неактивным?  (Прочитано 4440 раз)
maybell
Гость
« : Декабрь 10, 2008, 13:26 »

Есть формочка с объектом QDateTimeEdit и QCheckBox.
Необходимо сделать так, чтобы до нажатия чекбокса дата была неактивной, т.е. без значений для того чтобы параметры даты не передавались затем в процедуру.
Каким образом это можно реализовать?
Пробовались методы типа setDisable, setVisible и тп, но кроме сообщения о закрытии приложения, положительных эффектов не наблюдалось.

 
worktest.h

Код:
#ifndef WORKTEST_H
#define WORKTEST_H

#include <QWidget>
class QCheckBox;
class QDateTimeEdit;


class Worktest:public QWidget
{
     Q_OBJECT
     public:
          Worktest(QWidget *parent = 0);
     private slots:
       
void   event(int);
     private:
  QDateTimeEdit *date_edit;
          QCheckBox *check_btn;
           



};
#endif;
worktest.cpp
Код:
#include "worktest.h"
#include <QtGui>



Worktest::Worktest(QWidget *parent)
: QWidget(parent)
{
     QFrame *frameout = new QFrame;
     frameout->setGeometry(QRect(0, 0, 100, 100));
    QDateTimeEdit *date_edit=new QDateTimeEdit(frameout);
     
    QCheckBox *check_btn= new QCheckBox(frameout);
    check_btn->setGeometry(QRect(3, 25, 50, 20));
    check_btn->setText("active");     
     QVBoxLayout *layout = new QVBoxLayout;
     layout->addWidget(frameout);
     setLayout(layout);
    setWindowTitle(tr("test PROGA"));
     setMinimumSize(QSize(150, 70));
     setMaximumSize(QSize(150, 70)); 
connect(check_btn, SIGNAL(stateChanged(int)), this, SLOT(event(int)));
}
void Worktest::event(int s)
{
check_btn->checkState()==s;
if (s==1)

 {
     date_edit->setHidden(false);
  }
else
{
date_edit->setHidden(true);
}
   
}


main.cpp
Код:
#include <QApplication>

#include "worktest.h"

int main(int argc, char *argv[])
{

QApplication app(argc, argv);
Worktest worktest;
worktest.show();
return app.exec();
}
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Декабрь 10, 2008, 17:48 »

connect(checkBox,SIGNAL( toggled(bool)),dateEdit,SLOT(setEnabled(bool)))
И после создания dateEdit делаешь dateEdit->setEnabled(false).
« Последнее редактирование: Декабрь 10, 2008, 17:50 от panter_dsd » Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
maybell
Гость
« Ответ #2 : Декабрь 10, 2008, 20:53 »

Спасибо за совет, заработало.
А можно сделать так чтобы объект QDateTimeEdit был пустым, т.е. без даты,но он был виден?
Записан
ритт
Гость
« Ответ #3 : Декабрь 10, 2008, 21:10 »

данный функционал ожидается в будущих версиях Qt.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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