Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: maybell от Декабрь 10, 2008, 13:26



Название: как сделать объект QDateTimeEdit неактивным?
Отправлено: 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();
}


Название: Re: как сделать объект QDateTimeEdit неактивным?
Отправлено: Пантер от Декабрь 10, 2008, 17:48
connect(checkBox,SIGNAL( toggled(bool)),dateEdit,SLOT(setEnabled(bool)))
И после создания dateEdit делаешь dateEdit->setEnabled(false).


Название: Re: как сделать объект QDateTimeEdit неактивным?
Отправлено: maybell от Декабрь 10, 2008, 20:53
Спасибо за совет, заработало.
А можно сделать так чтобы объект QDateTimeEdit был пустым, т.е. без даты,но он был виден?


Название: Re: как сделать объект QDateTimeEdit неактивным?
Отправлено: ритт от Декабрь 10, 2008, 21:10
данный функционал ожидается в будущих версиях Qt.