Версия для печати темы
Форум на CrossPlatform.RU _ Qt Общие вопросы _ ComboBox
Автор: Cerberon 23.2.2011, 12:06
Цитата
void MainWindow::on_comboBox_currentIndexChanged(int index)
Что возвращает данное событие? Как нумеруется index? Есть список и соответсвенно позиции в нём нужно присваивать переменной значения, как узнать эту позицию?
Автор: panter_dsd 23.2.2011, 12:10
QVariant QComboBox::itemData ( int index, int role = Qt::UserRole ) const
Нумеруется как обычно от нуля.
Автор: Rocky 23.2.2011, 13:15
Цитата
Что возвращает данное событие?
Это не событие. Это слот сигнала. void ничего не возвращает.
Цитата
Как нумеруется index?
Айтемы в комбобоксе нумеруются от 0 как и сказал
panter_dsd. Только в данном случае приходит индекс того элемента, который является текущим в комбобоксе.
Цитата
Есть список и соответсвенно позиции в нём нужно присваивать переменной значения
Вот блин неужели так сложно писать по правилам русского языка? Или хотя бы самому перечитать вопрос? Что и кому нужно присваивать? Переменной, позиции или индексу?
Автор: Cerberon 23.2.2011, 17:13
Выучи падежи и поймёшь.
Автор: Litkevich Yuriy 23.2.2011, 17:17
Cerberon, давай развёрнутое пояснение своей фразе:
Цитата(Cerberon @ 23.2.2011, 14:06)
Есть список и соответсвенно позиции в нём нужно присваивать переменной значения
с падежами и так далее, чтобы и я понял её значение.
Автор: RazrFalcon 23.2.2011, 18:23
Цитата(Cerberon @ 23.2.2011, 11:06)
Что возвращает данное событие?
Позицию, начиная с 0, текущего значения комбобокса.
Выбрали 3-й пункт, название не важно, index=2.
Цитата(Cerberon @ 23.2.2011, 11:06)
Есть список и соответсвенно позиции в нём нужно присваивать переменной значения, как узнать эту позицию?
Непереваримо... Заполняем так, к примеру:
QStringList list;
list<<"One"<<"Two"<<"Three";
comboBox->addItems(list);
Автор: Rocky 24.2.2011, 8:46
Цитата(Cerberon @ 23.2.2011, 17:13)
Выучи падежи и поймёшь.
Ну, видимо, нам всем нужно выучить падежи чтобы тебе помочь. Или срочно в телепатов переквалифицироваться.
Автор: Cerberon 27.2.2011, 10:53
Есть ComboBox, когда выбран элемент, нужно получить его номер, чтобы затем поставить его в условие if. Например:
if (index = 1) {
QString str = "One";
}
Автор: RazrFalcon 27.2.2011, 11:36
void MainWindow::comboBox_currentIndexChanged(int index)
{
if (index = 1) {
QString str = "One";
}
}
или
void MainWindow::order_comboBox_currentIndexChanged(QString name)
{
QString str = name;
}
ПКМ по комбобоксу в дизайнере - слоты - ищем там выше приведенные.
Автор: Cerberon 27.2.2011, 15:15
Да. Вот мой код:
void MainWindow::on_comboBox_currentIndexChanged(int index)
{
if (index = 1)
{
QString str = "One";
}
}
void MainWindow::on_pushButton_2_clicked()
{
ui->textEdit->insertPlainText(str);
}
Но значение переменной str не меняется.
Автор: Litkevich Yuriy 27.2.2011, 16:16
Цитата(Cerberon @ 27.2.2011, 17:15)
Но значение переменной str не меняется.
какой именно?
той что локальная в функции
void MainWindow::on_comboBox_currentIndexChanged(int index) или той, что член класса?
Автор: Cerberon 27.2.2011, 19:11
В смысле член класса, хочешь сказать это две разные переменные?
В начале кода объявлена так:
QString str;
Автор: Litkevich Yuriy 27.2.2011, 20:09
Цитата(Cerberon @ 27.2.2011, 21:11)
В начале кода
что значит в начале кода?
Я вижу :
void MainWindow::on_comboBox_currentIndexChanged(int index)
{
if (index = 1)
{
QString str = "One"; // объявлена переменная внутри блока if
}
}
И
void MainWindow::on_pushButton_2_clicked()
{
ui->textEdit->insertPlainText(str); // используется переменная str, на которую компилятор не будет ругаться только если она член класса MainWindow
}
Автор: Cerberon 27.2.2011, 20:43
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QString>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
QString str;
void MainWindow::on_comboBox_currentIndexChanged(int index)
{
if (index = 1) {
QString str = "One";
}
}
void MainWindow::on_pushButton_2_clicked()
{
ui->textEdit->insertPlainText(str);
}
MainWindow::~MainWindow()
{
delete ui;
}
Автор: Litkevich Yuriy 27.2.2011, 20:59
Cerberon, да ты оригинал.
Сделай переменную str членом класса (запиши её в объявлении класса). В функции MainWindow::on_comboBox_currentIndexChanged убери объявление (текст QString). Тогда будешь работать с одной переменной
Автор: Rocky 27.2.2011, 22:53
А вот в строке
if (index = 1)
ничего не смущает?
Автор: Cerberon 28.2.2011, 12:43
if ((index == 1))
Автор: Litkevich Yuriy 28.2.2011, 17:44
Cerberon, двойные скобки не нужно.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)