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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Создать действие для кнопки. Записывать число 5 то в ту ечейку, которая в фокусе  (Прочитано 6012 раз)
freestyler
Гость
« : Сентябрь 13, 2011, 11:38 »

Всем привет! И спасибо заранее!

1 вопрос.
Есть два поля SpinBox1 и SpinBox2, есть кнопка Button. Нужно чтобы когда фокус на SpinBox1 и при нажатии на кнопку Button в SpinBox1 записывалось число 5. А если фокус на SpinBox2, то 5 записываем туда. Как это сделать?
(под фокусом я имею ввиду - нажали tab и выделился SpinBox1, нажали ещё - выделился SpinBox2)

2 вопрос.
Есть ещё два поля - SpinBox3 и SpinBox4, есть кнопка Button2. Нужно чтобы при нажатии на кнопку её действие чередовалось. Как именно - Нажали первый раз-записали в SpinBox3 число 5, нажали второй раз - записали число 5 в  SpinBox4. Как это сделать?
(Затем взяли и написали в SpinBox3 и SpinBox4 число 2, а затем нажали кнопку Button2 и у нас снова в SpinBox3 записалась цифра 5, нажали ещё - записалась цифра пять в SpinBox4...)


Записан
cya-st
Гость
« Ответ #1 : Сентябрь 13, 2011, 15:05 »

Есть очень много шагов это реализовать. Почитайте основы программирования.
Записан
Alf
Гость
« Ответ #2 : Сентябрь 13, 2011, 15:28 »

по вопросу 2.
Нужно хранить в некой переменной spinID идентификатор SpinBox-а.
В обработчике клика Button2:
1) менять значение SpinBox-а в зависимости от значения переменной spinID;
2) вызывать итератор переменной spinID.
Записан
Alf
Гость
« Ответ #3 : Сентябрь 13, 2011, 16:14 »

по вопросу 1.
Есть функция
Код
C++ (Qt)
QWidget::hasFocus().
Можно вызывать её для spinBox-ов в обработчике клика Button1 и в засисимости от результата выводить значение в тот или иной SpinBox.
Записан
freestyler
Гость
« Ответ #4 : Сентябрь 13, 2011, 17:52 »

void MainWindow::on_Button_clicked()
{
 if (ui->Spinbox1->hasFocus())
        ui->label->setText("111");
 else
        ui->label_8->setText("222");

Всегда выдает "222". Что неверно?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Сентябрь 13, 2011, 17:58 »

>>Всегда выдает "222". Что неверно?
всё верно. Фокус же на кнопке, на которую ты щёлкал
Записан

Юра.
freestyler
Гость
« Ответ #6 : Сентябрь 13, 2011, 18:12 »

Фокус же на кнопке, на которую ты щёлкал
Смеющийся А как сделать чтобы определялся фокус не на кнопке, как видимо написал я  Веселый , а на SpinBox?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Сентябрь 14, 2011, 09:39 »

В таком случае кнопка вообще никогда не должна иметь фокуса:
Код
C++ (Qt)
Button->setFocusPolicy( Qt::NoFocus );
Записан

Qt 5.11/4.8.7 (X11/Win)
freestyler
Гость
« Ответ #8 : Сентябрь 14, 2011, 11:26 »

Всем огромное спасибо! Всё получилось!  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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