Название: Как связать переменную с спинбоксом ! Отправлено: Sergey от Август 03, 2010, 12:08 Здравствуйте !
Взял ф-цию с примера , теперь надо свзять одну переменную внутри этой функции со спинбоксом.Знаю , что надо воспользоватся сигналом и слотом но там разное кол-во аргументов в сигнале и слоте . Но как это изменить не знаю . Напишите пожалуйста как через connect coeдинить переменную i со спинбоксом . Вот код : Код: void DataPlot::insertCurve(Qt::Orientation o, Заранее благодарен Название: Re: Как связать переменную с спинбоксом ! Отправлено: kuzulis от Август 03, 2010, 13:12 1. Делаем сигнал:
Код: signals: 2. Делаем слот: Код: private slots: Код: void DataPlot::slotUpdateSpinBox(double value) 3. делаем коннект Код: connect(this, SIGNAL(signalNewI(double)), this, SLOT(slotUpdateSpinBox(double))); 4. в метод insertCurve добавляем: Код: void DataPlot::insertCurve(Qt::Orientation o, Или я не понял сути? -- Упс, можно использовать сразу слот void QDoubleSpinBox::setValue(double val) Название: Re: Как связать переменную с спинбоксом ! Отправлено: Sergey от Август 03, 2010, 15:24 я новичок , не совсем понял , что в данном контексте this ,потому что компилятор на него ругается)
спасибо , что помогаете) Название: Re: Как связать переменную с спинбоксом ! Отправлено: kuzulis от Август 03, 2010, 15:35 Ох... Я так понимаю:
1. Вам нужно чтобы после того как вы ввели/изменили значение в QSpinBox автоматом вызывался слот insertCurve ? Или 2. Необходимо чтобы после отработки слота insertCurve автоматом менялось значение в QSpinBox ? --- Я пример привел для п.2. Цитировать я новичок , не совсем понял , что в данном контексте this ,потому что компилятор на него ругается Ох... Надоже! :)[offtop] И зачем же дублировать тему на http://www.qtcentre.org/threads/33009-how-connection-variable-in-functin-with-spinBox ? Вы думаете, что "буржуины" вам помогут нежели "свои" ? :) [/offtop] Название: Re: Как связать переменную с спинбоксом ! Отправлено: Sergey от Август 03, 2010, 15:53 чтоб вы правильно понимали insertCurve вызывает линию , которую пользователь должен передвигать благодаря изменениям в спинбоксе )
да , я знаю , что странные вопросы , ну что делать !) я написал в теме Вопросы новичков) получается , если вам не сложно покажите как реализовать первый вариант .:) [offtop] просто перед ними , не так стыдно как перед своими , но пока только вы мне помогаете , за что вам огромное спасибо )) :) [/offtop] Название: Re: Как связать переменную с спинбоксом ! Отправлено: m_ax от Август 03, 2010, 23:58 Всё решается гораздо проще )
Есть такой класс QwtPlotMarker у которого есть метод setValue.. А теперь смотрим пример (исходники) bode: Qwt/qwt-5.2.1/examples/bode/ - это то, что вы пытаетесь сделать, каким то окольным сомнительным путём)) Название: Re: Как связать переменную с спинбоксом ! Отправлено: Sergey от Август 04, 2010, 14:46 Ох... Я так понимаю: Если не сложно покажите как для 1 варианта ... и я написал внизу , что должно получится , если есть вопросы ...спрашивайте )оч надо это сделать )1. Вам нужно чтобы после того как вы ввели/изменили значение в QSpinBox автоматом вызывался слот insertCurve ? Или 2. Необходимо чтобы после отработки слота insertCurve автоматом менялось значение в QSpinBox ? --- Я пример привел для п.2. Цитировать я новичок , не совсем понял , что в данном контексте this ,потому что компилятор на него ругается Ох... Надоже! :)[offtop] И зачем же дублировать тему на http://www.qtcentre.org/threads/33009-how-connection-variable-in-functin-with-spinBox ? Вы думаете, что "буржуины" вам помогут нежели "свои" ? :) [/offtop] Название: Re: Как связать переменную с спинбоксом ! Отправлено: kuzulis от Август 04, 2010, 14:59 Для п.1 нужно привязаться к сигналу от QDoubleSpinBox и выполнить нужный слот для перерисовки, т.е.
1. Создаем слот: Код: void DataPlot::slotProcChangeValueFromDoubleSpinBox(double i) 2. Коннектим наш слот к сигналу от спинбокса: Код: connect(yuorDoubleSpinBox, SIGNAL(valueChanged(double)), this, SLOT(slotProcChangeValueFromDoubleSpinBox(double))); как то так. Название: Re: Как связать переменную с спинбоксом ! Отправлено: Sergey от Август 04, 2010, 16:27 Для п.1 нужно привязаться к сигналу от QDoubleSpinBox и выполнить нужный слот для перерисовки, т.е. Не подскажите , почему на this ругается компилятор , в самом коннекте !?))1. Создаем слот: Код: void DataPlot::slotProcChangeValueFromDoubleSpinBox(double i) 2. Коннектим наш слот к сигналу от спинбокса: Код: connect(yuorDoubleSpinBox, SIGNAL(valueChanged(double)), this, SLOT(slotProcChangeValueFromDoubleSpinBox(double))); как то так. Извините , что достаю ) Название: Re: Как связать переменную с спинбоксом ! Отправлено: kuzulis от Август 04, 2010, 17:25 Цитировать Не подскажите , почему на this ругается компилятор , в самом коннекте !?)) Не имею понятия. Название: Re: Как связать переменную с спинбоксом ! Отправлено: Sergey от Август 04, 2010, 17:41 Цитировать Не подскажите , почему на this ругается компилятор , в самом коннекте !?)) Не имею понятия. Название: Re: Как связать переменную с спинбоксом ! Отправлено: Anarion от Август 04, 2010, 19:56 А Вы в каком месте вызываете connect?
В частности Код: connect(yuorDoubleSpinBox, SIGNAL(valueChanged(double)), this, SLOT(slotProcChangeValueFromDoubleSpinBox(double))); Или есть еще вариант, через статический метод QObject::connect(); Название: Re: Как связать переменную с спинбоксом ! Отправлено: Sergey от Август 05, 2010, 10:45 Вроде написал что передаёт из спинбокса значение в функции . Но если значение , меняется ф-ция не перерисовывает линию .Подскажите как сделать чтоб ф-ция перерисовывала линию всё-таки . Знаю , что всех замучал здесь , но извините )
Заранее спасибо ! Код: void DataPlot::strob(Qt::Orientation o, Название: Re: Как связать переменную с спинбоксом ! Отправлено: Sergey от Август 17, 2010, 11:22 Появились новые вопросы с теми же спинбоксами , помогите если сможите .
Первый вопрос заключается , в том чтоб пользователь мог не только единицы менять , но и десятки в самом спинбоксе .... подскажите как это сделать ! Второй вопрос заключается , посоветуйте как сделать лучше мне надо чтоб спинбокс лежал на картинке ...подскажите алгоритм ..как это сделать .. Заранее спасибо за помощь ! )) Название: Re: Как связать переменную с спинбоксом ! Отправлено: Anarion от Август 17, 2010, 13:44 1) Используй не QSpinBox, а QDoubleSpinBox. Там есть все необходимые свойства: количество цифр после запятой, минимальное/ максимальное значения, а также шаг.
2) Если я правильно понял, требуется, чтобы числа отображались на каком-то фоне. Тогда можно так: Код: QPalette pal = ui->doubleSpinBox->palette(); //создание палитры копированием со спин бокса Название: Re: Как связать переменную с спинбоксом ! Отправлено: Sergey от Август 17, 2010, 15:07 2) Если я правильно понял, требуется, чтобы числа отображались на каком-то фоне. Тогда можно так: Код: QPalette pal = ui->doubleSpinBox->palette(); //создание палитры копированием со спин бокса [/quote]ну не обязательно только цифры весь спин бокс может наход на каком то рисунке .... ну я думаю ваш кусок кода можно использовать и для всего спин бокса ... правильно ? )) Название: Re: Как связать переменную с спинбоксом ! Отправлено: Anarion от Август 17, 2010, 15:32 Будет закрашиваться все поле для ввода цифр, т.е. весь эдит, а не только под цифрами.
По такому принципу можешь установить палитру для виджета, на котором находится спинбокс. На счет прозрачности, правда, не знаю) Название: Re: Как связать переменную с спинбоксом ! Отправлено: Sergey от Август 18, 2010, 11:05 Возник вопрос с шагом мне надо сделать чтоб пользователь , мог менять и единицы и десятки .... а так я могу выставить только один шаг и всё ) не знаете как это поменять !? )
Название: Re: Как связать переменную с спинбоксом ! Отправлено: Anarion от Август 18, 2010, 11:29 Первое, что приходит в голову:
1) создай QLineEdit, вставь туда QDoubleValidator и используй это поле для того, чтобы пользователь сам мог ввести шаг. Потом либо сделай кнопку "Применить", либо по завершению редактирования лайн эдита устанавливай введенное значение в качестве шага для спинбокса. 2) создай QComboBox и туда забей в строчном формате числа, например: Код: ... Название: Re: Как связать переменную с спинбоксом ! Отправлено: Sergey от Август 19, 2010, 12:47 а можно сделать чтоб спинбокс находилс на QLabel ?
Название: Re: Как связать переменную с спинбоксом ! Отправлено: Anarion от Август 19, 2010, 13:50 В принципе можно методом
Код: QDoubleSpinBox::setParent(QWidget*/*тут укажи свой QLabel*/) Название: Re: Как связать переменную с спинбоксом ! Отправлено: Sergey от Август 19, 2010, 14:03 В принципе можно методом Мне надо чтобы было видно когда кнопка активирована, а когда нет. Я добавил рисунок на QLabel , а потом на него хочу спинбокс . И ещё это будет довольно эстетично .Если есть ещё вопросы пишите ....рад общению ) тем более вы мне оч помогли ..и если не надоел то будете помогать )Код: QDoubleSpinBox::setParent(QWidget*/*тут укажи свой QLabel*/) Название: Re: Как связать переменную с спинбоксом ! Отправлено: Anarion от Август 19, 2010, 14:20 Если хочешь отображать сам спинбокс именно на каком-то фоне, лучше(по-моему) использовать не QLabel, а QFrame. В него спокойно добавляется лайаут и все красиво выравнивается. Фон туда ставится тем же способом, но пара отличий: надо установить для фрейма setAutoFillBackground(true), и указывать роль Background в методе pal.setBrush(QPalette::Background,QBrush(pix));
Идею с кнопкой воображение не представляет :( Не понял, что хочешь) P.S.: На счет QFrame: 1) Если делаешь в дизайнере, то 1.1 Добавляешь куда надо QFrame 1.2 Перетаскиваешь в него QDoubleSpinBox 1.3 Тыкаешь QFrame и устанавливаешь там нужный лайаут. 2) Если делаешь вручную, то нечто типа: Код
Название: Re: Как связать переменную с спинбоксом ! Отправлено: Sergey от Август 19, 2010, 14:29 спасибо ... может вы напишите в личные сообщении вашу аську .... и я покажу ващему воображению что я хочу! )
|