2015-11-29 2 views
0

Я новичок в qt и C++ и столкнулся с чем-то, что не могу решить путем поиска в Интернете. Во-первых, вот код в вопросе:qt C++ gui 'on_lineEdit'

void MainWindow::on_lineEdit_3_textChanged(const QString &arg1) //check for hex or octal  
{ 
QString text = ui -> lineEdit_3 -> text(); 
QString y = text.mid(0, 1); 
int n = text.size(); 
{ 
    if (y == "0") 
     { 
     if (n > 1) 
     { 
      text = "Dec. only"; 
      ui -> lineEdit_3 -> setText(""); 
     } 
     } 
} 
ui -> lineEdit -> setText(text); 

} 

Это работает отлично, но когда я вернулся в редакцию после запуска, у меня есть сообщение в нижней части экрана:

Неиспользованный параметра «arg1» [-Wunused параметр]

Я уверен, что он имеет в виду &arg1 в первой строке, но я понятия не имею, что arg1 будет использоваться для или, как его использовать. Может ли кто-нибудь направить меня на информацию о ее использовании или учебное пособие по его использованию?

ответ

1

Из документов: «Это свойство содержит текст редактирования строки». arg1 должен быть текущим текстом. Для получения дополнительной информации читайте here.

+0

Да, я видел это, прежде чем задавать свой вопрос. Это просто не имеет никакого смысла для меня .... –

0

Эта строка не требуется, поскольку у вас уже есть текст в arg1.

QString text = ui -> lineEdit_3 -> text(); 

Тогда вы можете использовать следующее, чтобы получить первый символ из текстового поля.

QChar y = arg1.at(0); 
+0

Спасибо! однако мне нужно получить всю строку текста, а не только первый символ. Первый символ используется, чтобы определить, является ли он шестнадцатеричным или восьмеричным. Немного больше информации: я использую это для чтения данных без необходимости нажимать на что-либо. Когда пользователь меняет поле lineedit_3, я хочу иметь возможность автоматически читать и использовать его для установки переменной. Есть ли лучший способ сделать это, чем с 'on_lineEdit_3_textChanged'? –

0

Вы получаете, что точное сообщение, потому что в определении функции у вас есть const QString &arg1, однако вы не использовали его в пределах вашей самой функции, как вместо того, чтобы вы извлекая текст с ui->lineEdit_3->text(). Параметр arg1 - это текст, содержащийся в ui->lineEdit_3 после его изменения, поэтому вам не нужно извлекать его с вызовом ->text().

Боковой наконечник, вы можете раздавить предупреждающее сообщение Q_UNUSED(someParameterName), но по какой-то причине оно предупреждает об этом.

+0

Ах, теперь только проблеск понимания. Но как я могу извлечь arg1? –

+0

Так что 'arg1' передается сигналом в вашу функцию, внутри вашей функции вы можете просто использовать' arg1', как он уже определен. Итак, где у вас есть: 'QString text = ui -> lineEdit_3 -> text(); QString y = text.mid (0, 1); ' Вы можете использовать это вместо: ' QString y = arg1.mid (0,1); ' –