Я создал приложение с похожей проблемой, пытаясь преобразовать текст qpushbutton в сам qlineedit.Ключ заключается в том, как вы инициализируете кнопки и используете полиморфизм в своей функции.Создание сигнала выброса не будет работать для отдельных персонажей..DigitValue будет работать в том случае, если для чисел (которые будут иметь кнопки типа int), но qt не имеет символьного значения (я должен сказать, что после 6 часов чтения qt doc и еще 4 попыток различных комбинаций он не будет работать), Я думаю, это связано с тем, сколько бит требуется для хранения каждого типа переменной в массиве.Я даже пытался преобразовать button-> text в QString для использования с функцией emit в качестве прототипа сигнала.
Я не знаю, какова ваша раскладка кнопок, но я дам вам краткий обзор того, что я сделал.Сначала я создал глобальный статический массив const char, содержащий все необходимые буквы, например,
static const char vowelarray[] = "AEIOU";
Затем инициализировал QPushButtons с помощью функции MainWindow, используя итерацию, установив условие завершения цикла для массива char размера(в вашем случае 60?).Это все зависит от вашего расположения кнопок, хотя.Я лично создал функцию void (setLocation) для button-> setGeometry каждой кнопки, итерировал setGeometry, а затем передал функцию в функцию MainWindow в конце функции.Следующий код был использован для инициализации кнопок, подключения сигналов к слотам и использования полиморфизма для подключения к lineedit.
for (int i = 0; i < 26; i++){
characterButton[i] = new QPushButton(chararry[i], this); `
characterButton[i] -> setStyleSheet("QPushButton{background: grey; color: brown}");
connect(characterButton[i],SIGNAL(released(),this,SLOT(characterPushed()));
}
setLocation();
Затем была создана функция void (например, void MainWindow :: characterPuched ()), где следующееиспользовался код:
void MainWindow::characterPushed(){
QPushButton *characterButton = (QPushButton*) sender();
if (characterButton )
{
lineEdit -> setText(letters.insert(letters.size(), characterButton -> text()));
}
lineEdit -> setText(letters);
}
конечно, письма были глобальной переменной, а также:
QString letters = "";
и, конечно, QPushButtons и функция были прототипом в заголовочном файле как приватныйпеременные и слоты, например,
private:
QPushButton *characterButton[26];
, переменная 'letters' использовалась для извлечения и ввода текста в и из строки редактирования для дальнейших функций во всем приложении.Удачи! ``