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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableWidget и QSpinDoubleBox  (Прочитано 5874 раз)
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« : Март 05, 2011, 01:15 »

Здравствуйте! Подскажите куда копать: есть QTableWidget, ячейки которого заполнены QSpinDoubleBox, хотелось бы заполучить возможность посылки сигнала при клике на этот самый QSpinDoubleBox, пробовал через наследование и переопределение слота setFocus() - не вышло. Направте на путь истинный, пожалуйста  Улыбающийся
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
alexman
Гость
« Ответ #1 : Март 05, 2011, 08:39 »

А как вы QSpinDoubleBox устанавливаете?
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #2 : Март 05, 2011, 17:50 »

Устанавливаю так:
Код:
MySpinBox *dsb = new MySpinBox(MySpinBox::SpinBoxForTime); //MySpinBox наследован от QSpinDoubleBox
    connect(dsb,SIGNAL(valueChanged(MySpinBox*)),SLOT(onValueChanged(MySpinBox*))); //присоединение сигнала к слоту
    ui->tableWidget->setCellWidget(0,0,dsb);
в идеале хотелось  бы получить такой-же сигнальчик, как во второй строке кода, только по получению спинбоксом фокуса ввода.
Записан

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

Сообщений: 2094



Просмотр профиля
« Ответ #3 : Март 05, 2011, 18:00 »

Устанавливаю так:
Код:
MySpinBox *dsb = new MySpinBox(MySpinBox::SpinBoxForTime); //MySpinBox наследован от QSpinDoubleBox
    connect(dsb,SIGNAL(valueChanged(MySpinBox*)),SLOT(onValueChanged(MySpinBox*))); //присоединение сигнала к слоту
    ui->tableWidget->setCellWidget(0,0,dsb);
в идеале хотелось  бы получить такой-же сигнальчик, как во второй строке кода, только по получению спинбоксом фокуса ввода.
Это не правильно. Так не надо устанавливать.
надо как то так:
Код
C++ (Qt)
connect(dsb, SIGNAL(valueChanged(int)), this, SLOT(onValueChanged(int)));
 

QSpinDoubleBox - это в смысле QDoubleSpinBox.. или уже что то новое придумали?
« Последнее редактирование: Март 05, 2011, 18:03 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #4 : Март 05, 2011, 18:15 »

Это не правильно. Так не надо устанавливать.
надо как то так:
Код
C++ (Qt)
connect(dsb, SIGNAL(valueChanged(int)), this, SLOT(onValueChanged(int)));
 
Это понятно, спасибо, исправим. Хотя в доках написано, что
Цитировать
Код
C++ (Qt)
bool QObject::connect ( const QObject * sender, const char * signal, const char * method, Qt::ConnectionType type = Qt::AutoConnection ) const
This function overloads connect().
Connects signal from the sender object to this object's method.
Equivalent to
Код
C++ (Qt)
connect(sender, signal, this, method, type)
.
так что в теории должно быть без разницы.
Цитировать

QSpinDoubleBox - это в смысле QDoubleSpinBox.. или уже что то новое придумали?
Да, мой косяк, читать QSpinDoubleBox как QDoubleSpinBox Улыбающийся
Записан

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

Сообщений: 2094



Просмотр профиля
« Ответ #5 : Март 05, 2011, 18:19 »

Цитировать
Это понятно, спасибо, исправим. Хотя в доках написано, что
...
так что в теории должно быть без разницы.
Я вообщето это к тому, что аргументы у valueChanged(int) и у onValueChanged(int) должны быть int, а не MySpinBox*
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #6 : Март 05, 2011, 18:40 »

Цитировать
Это понятно, спасибо, исправим. Хотя в доках написано, что
...
так что в теории должно быть без разницы.
Я вообщето это к тому, что аргументы у valueChanged(int) и у onValueChanged(int) должны быть int, а не MySpinBox*
У меня сигнал свой, который указатель на сам себя возвращает при изменении значения спинбокса, так что все в порядке Улыбающийся
Записан

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

Сообщений: 2094



Просмотр профиля
« Ответ #7 : Март 05, 2011, 18:48 »

Цитировать
У меня сигнал свой, который указатель на сам себя возвращает при изменении значения спинбокса, так что все в порядке Улыбающийся
Ааа... Ну раз сейчас такие костыли в порядке вещей.. Тогда наверно нужно зарегистрировать ваш тип MySpinBox*. Почитайте про
Q_DECLARE_METATYPE,
QMetaType
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #8 : Март 05, 2011, 19:08 »

Цитировать
У меня сигнал свой, который указатель на сам себя возвращает при изменении значения спинбокса, так что все в порядке Улыбающийся
Ааа... Ну раз сейчас такие костыли в порядке вещей.. Тогда наверно нужно зарегистрировать ваш тип MySpinBox*. Почитайте про
Q_DECLARE_METATYPE,
QMetaType
На счет костылей - ну как умеем, раньше только на асме z80 программил, там любые костыли в порядке вещей. А по основному вопросу, т.е. как отловить событие получения фокуса ввода спинбоксом есть что подсказать?
Записан

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

Сообщений: 2094



Просмотр профиля
« Ответ #9 : Март 05, 2011, 19:33 »

Цитировать
А по основному вопросу, т.е. как отловить событие получения фокуса ввода спинбоксом есть что подсказать?
я бы курил в сторону определения своего eventFilter:
bool eventFilter(QObject *obj, QEvent *event);
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #10 : Март 05, 2011, 20:17 »

Цитировать
А по основному вопросу, т.е. как отловить событие получения фокуса ввода спинбоксом есть что подсказать?
я бы курил в сторону определения своего eventFilter:
bool eventFilter(QObject *obj, QEvent *event);

Оно, спасибо.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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