Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Hordi от Января 17, 2008, 15:39



Название: [3.3.8]Как подменить кнопку навигации между полями QDateTimeEdit?
Отправлено: Hordi от Января 17, 2008, 15:39
Необходимо подменить кнопку перехода между элементами поля ввода даты(времени) класса QDateTimeEdit (или аналоги). По умолчанию используется Key_Right и кнопка-разделителя (для даты ".", для времени ":").

Пробовал через eventFilter подменять точку на Key_Right - ничего не срабатывает. Вот кусок кода, который не работает:

bool CDateTime::eventFilter( QObject *obj, QEvent *e_ )
{
        if(QEvent::KeyPress == e_->type()){
                QKeyEvent *e = static_cast<QKeyEvent*>(e_);
                int k = e->key();
                qDebug("%d",k);
                if(Key_Period==k){
                   QKeyEvent ev(QEvent::KeyPress, Key_Right, 0, Qt::NoButton);
                   QApplication::sendEvent(obj,&ev);
                   return true;
                }
        }
        return CRegDialog::eventFilter(obj,e_);
}


Название: Re: Как подменить кнопку навигации между полями QDateTimeEdit?
Отправлено: ритт от Января 17, 2008, 16:09
мой ассистант не знает такого конструктора кейивента...знает только такой: QKeyEvent::QKeyEvent ( Type type, int key, Qt::KeyboardModifiers modifiers, const QString & text = QString(), bool autorep = false, ushort count = 1 )

/* укажи версию кутэ в тайтле поста */


Название: Re: Как подменить кнопку навигации между полями QDateTimeEdit?
Отправлено: Hordi от Января 17, 2008, 16:22
Сори, qt-3.3.8


Название: Re: [3.3.8]Как подменить кнопку навигации между полями QDateTimeEdit?
Отправлено: BaltikS от Января 18, 2008, 23:18
Мне кажется этот код не будет работать... Потому как Ты ставишь фильтр на QDateTime. А редактируешь дату и время с клавиатуры непосредственно уже в другом виджете QDateEdit(QTimeEdit).... Эти виджеты внутри QDateTimeEdit-а... А доступа увы к ним нету  ;)


Название: Re: [3.3.8]Как подменить кнопку навигации между полями QDateTimeEdit?
Отправлено: _govorilka от Января 19, 2008, 06:19
А в 4.x.x, есть функции...
QDateTimeEdit::lineEdit() - доступ к edit'у
QDateTimeEdit::setLineEdit(QLineEdit * lineEdit) - установка собственного edit'а

Если нет объективных причин, лучше перейти на 4.x.x, проблем будет решать проще