Russian Qt Forum

Qt => Вопросы новичков => Тема начата: freestyler от Сентябрь 13, 2011, 11:38



Название: Создать действие для кнопки. Записывать число 5 то в ту ечейку, которая в фокусе
Отправлено: 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...)


(http://s11.radikal.ru/i184/1109/38/4a9221da3a0a.png)


Название: Re: Создать действие для кнопки. Записывать число 5 то в ту ечейку, которая в фокусе
Отправлено: cya-st от Сентябрь 13, 2011, 15:05
Есть очень много шагов это реализовать. Почитайте основы программирования.


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


Название: Re: Создать действие для кнопки. Записывать число 5 то в ту ечейку, которая в фокусе
Отправлено: Alf от Сентябрь 13, 2011, 16:14
по вопросу 1.
Есть функция
Код
C++ (Qt)
QWidget::hasFocus().
Можно вызывать её для spinBox-ов в обработчике клика Button1 и в засисимости от результата выводить значение в тот или иной SpinBox.


Название: Re: Создать действие для кнопки. Записывать число 5 то в ту ечейку, которая в фокусе
Отправлено: freestyler от Сентябрь 13, 2011, 17:52
void MainWindow::on_Button_clicked()
{
 if (ui->Spinbox1->hasFocus())
        ui->label->setText("111");
 else
        ui->label_8->setText("222");

Всегда выдает "222". Что неверно?


Название: Re: Создать действие для кнопки. Записывать число 5 то в ту ечейку, которая в фокусе
Отправлено: lit-uriy от Сентябрь 13, 2011, 17:58
>>Всегда выдает "222". Что неверно?
всё верно. Фокус же на кнопке, на которую ты щёлкал


Название: Re: Создать действие для кнопки. Записывать число 5 то в ту ечейку, которая в фокусе
Отправлено: freestyler от Сентябрь 13, 2011, 18:12
Фокус же на кнопке, на которую ты щёлкал
;D А как сделать чтобы определялся фокус не на кнопке, как видимо написал я  :D , а на SpinBox?


Название: Re: Создать действие для кнопки. Записывать число 5 то в ту ечейку, которая в фокусе
Отправлено: GreatSnake от Сентябрь 14, 2011, 09:39
В таком случае кнопка вообще никогда не должна иметь фокуса:
Код
C++ (Qt)
Button->setFocusPolicy( Qt::NoFocus );


Название: Re: Создать действие для кнопки. Записывать число 5 то в ту ечейку, которая в фокусе
Отправлено: freestyler от Сентябрь 14, 2011, 11:26
Всем огромное спасибо! Всё получилось!  :)