Название: Получение данных с формы "Настройки COM-порта" Отправлено: 8Observer8 от Сентябрь 08, 2014, 21:16 Привет!
Я сделал окно с настройками COM-порта: (http://i7.pixs.ru/storage/1/1/6/333png_6597690_13757116.png) Не могу придумать, как бы эти данные извлечь в переменные. Имя порта и скорость: Код
А как быть с остальным? Я сначала думал ориентироваться на индекс в ComboBox, но, к примеру, в QSerialPort::Parity значения такие: 0, 2, 3, ... То есть пропущена единица. Можно конечно это учесть, но некрасивая идея... Была идея сделать кучу if'ов и сравнивать по текстам в ComboBox'ах. Вроде ерунда, а я застрял. Помогите, пожалуйста, сделать красиво :) Название: Re: Получение данных с формы "Настройки COM-порта" Отправлено: BuRn от Сентябрь 08, 2014, 22:06 Вы про модели слышали?
Название: Re: Получение данных с формы "Настройки COM-порта" Отправлено: Kurles от Сентябрь 09, 2014, 06:13 Столько флуда на форуме, а даже до уровня "ребёнка ассистентского подземелья" (с) не дорос :)
Храни нужное значение в самом айтеме комбобокса. void QComboBox::addItem ( const QString & text, const QVariant & userData = QVariant() ); QVariant QComboBox::itemData ( int index, int role = Qt::UserRole ) const; Название: Re: Получение данных с формы "Настройки COM-порта" Отправлено: 8Observer8 от Сентябрь 09, 2014, 06:46 Вы про модели слышали? Да, я их для баз данных применяюСтолько флуда на форуме, а даже до уровня "ребёнка ассистентского подземелья" (с) не дорос :) То есть мне надо заполнять comboBox'ы не в дизайнере, а в конструкторе окна? Метод addItem всё равно же текст добавляет? Вообще не понял идею.Храни нужное значение в самом айтеме комбобокса. void QComboBox::addItem ( const QString & text, const QVariant & userData = QVariant() ); QVariant QComboBox::itemData ( int index, int role = Qt::UserRole ) const; Название: Re: Получение данных с формы "Настройки COM-порта" Отправлено: Kurles от Сентябрь 09, 2014, 07:18 Второй опциональный параметр userData ни о чем не говорит?
Название: Re: Получение данных с формы "Настройки COM-порта" Отправлено: schmidt от Сентябрь 09, 2014, 11:04 Идея в том, что текст в комбо - это только то, что видит пользователь. Представьте себе, что комбобокс - это тот же хеш с данными, ключами которого выступают строки. Под ними можно хранить любое значение QVariant() . И, да, заполнять комбо для этого нужно в коде, используя вызовы addItem(...), либо setItemData ( int index, const QVariant & value, int role = Qt::UserRole ).
Код: addItem ( const QString & text, const QVariant & userData = QVariant() ) либо Код: setItemData ( int index, const QVariant & value, int role = Qt::UserRole ) если пункты уже созданы. Для извлечения привязанного к выбранному пункту значения используйте метод Код: QVariant QComboBox::itemData ( int index, int role = Qt::UserRole ) const Не всё, что можно сделать средствами дизайнера, одинаково полезно ;D Название: Re: Получение данных с формы "Настройки COM-порта" Отправлено: vizir.vs от Сентябрь 09, 2014, 11:52 я использую дизайнер, только если нужно по-быстрому что-то наклепать и посмотреть как это будет смотреться. Ручками как-то удобнее получается.
Название: Re: Получение данных с формы "Настройки COM-порта" Отправлено: 8Observer8 от Сентябрь 09, 2014, 12:06 Да, разбирусь с этим вариантом. Пока это в новинку. Спасибо!
А что по поводу QComboBox + Model? Не стоит копать? Или на этом может что-то дельное получиться? Название: Re: Получение данных с формы "Настройки COM-порта" Отправлено: Bepec от Сентябрь 09, 2014, 12:07 Вариант с QVariant и есть случай с model :) Только в данном случае она установлена по умолчанию.
to vizir.vs - когда будет большой интерфейс и заказчик в процессе поиска, в дизейнере перекинуть пару виджетов туда-сюда быстрее и легче, чем в коде :D Название: Re: Получение данных с формы "Настройки COM-порта" Отправлено: 8Observer8 от Сентябрь 09, 2014, 15:54 Что-то я не до конца понял: Цитировать invalid cast from type 'QVariant' to type 'QSerialPort::DataBits' QSerialPort::DataBits dataBits = (QSerialPort::DataBits) ui->dataBitsComboBox->itemData( currentIndex ); Код
Код
Название: Re: Получение данных с формы "Настройки COM-порта" Отправлено: 8Observer8 от Сентябрь 09, 2014, 15:59 Я .toInt() забыл написать :)
Код
Название: Re: Получение данных с формы "Настройки COM-порта" Отправлено: vizir.vs от Сентябрь 09, 2014, 20:55 Вариант с QVariant и есть случай с model :) Только в данном случае она установлена по умолчанию. Я поэтому и говорю, что если надо по быстрому наклепать (сделать прототип), то да, юзаю дизайнер. А если уже разрабатываю итого приложение, то делаю ручками. К тому же я редко придумываю интерфейс. Этим занимаются менеджеры с дизайнерами совместно. А я уже реализую его в реалях Qtto vizir.vs - когда будет большой интерфейс и заказчик в процессе поиска, в дизейнере перекинуть пару виджетов туда-сюда быстрее и легче, чем в коде :D Название: Re: Получение данных с формы "Настройки COM-порта" Отправлено: 8Observer8 от Сентябрь 10, 2014, 06:44 К тому же я редко придумываю интерфейс. Этим занимаются менеджеры с дизайнерами совместно. А я уже реализую его в реалях Qt Хоть это не совсем по теме, но как могут дизайнеры сделать для вас интерфейс? Тем более вручную? Наверное, с помощью QML - это возможно (судя по Шлее). Вы QML имели ввиду?Название: Re: Получение данных с формы "Настройки COM-порта" Отправлено: torwig от Сентябрь 10, 2014, 08:03 К тому же я редко придумываю интерфейс. Этим занимаются менеджеры с дизайнерами совместно. А я уже реализую его в реалях Qt Хоть это не совсем по теме, но как могут дизайнеры сделать для вас интерфейс? Тем более вручную? Наверное, с помощью QML - возможно (судя по Шлее) Вы QML имели ввиду?Название: Re: Получение данных с формы "Настройки COM-порта" Отправлено: vizir.vs от Сентябрь 11, 2014, 11:39 К тому же я редко придумываю интерфейс. Этим занимаются менеджеры с дизайнерами совместно. А я уже реализую его в реалях Qt Хоть это не совсем по теме, но как могут дизайнеры сделать для вас интерфейс? Тем более вручную? Наверное, с помощью QML - возможно (судя по Шлее) Вы QML имели ввиду?Вы правы. Готовую форму написанную на qml дизайнеры не дают, а было бы круто=( |