Russian Qt Forum
Ноябрь 23, 2024, 10:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Кнопки в qt creator для новичков  (Прочитано 5519 раз)
nelogic
Новичок

Offline Offline

Сообщений: 7


Просмотр профиля
« : Май 19, 2020, 03:31 »

делаю проект ( школьный )
мне дали эту функцию для некоего дела ( перемешивание большого количества кнопок местами )
однако после довольно долгого использования, функция взбунтовалась
и теперь пишет ошибку: 'buttons' was not declared in this scope
что нужно использовать чтобы это поправить? так же буду рад более адекватному методу перемешивания вместо ответа
сама функция:
Код
C++ (Qt)
void MainWindow::on_pushButton_4_clicked()
{
   buttons.append(ui->pushButton);
   buttons.append(ui->pushButton_2);
   buttons.append(ui->pushButton_3);
   srand(time(0));
   for (int i=0; i<3; i++)
   {
       while (true)
       {
           r = rand()%3;
           if (buttons[r]->text()=="") {buttons[r]->setText(QString::number(i));
           break;}
       }
   }
}
 
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Май 19, 2020, 08:28 »

Ты видимо удалил определение buttons. Вангую, что это член класса MainWindow.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
nelogic
Новичок

Offline Offline

Сообщений: 7


Просмотр профиля
« Ответ #2 : Май 19, 2020, 09:17 »

проблема в том что я не трогал код...
И у меня не получилось ( давно я не программировал толком, поэтому многое забыл.... Хотя учитывая мой очень великий опыт и знания восстанавливать все это мне долго не придется...... ) так вот. Как добавить это определение туда вернуть правильно?
Да и если не поможете все равно спасибо. Теперь хоть примерно представляю куда копать...
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Май 19, 2020, 10:14 »

QList<QPushButton *> buttons;
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
nelogic
Новичок

Offline Offline

Сообщений: 7


Просмотр профиля
« Ответ #4 : Май 19, 2020, 10:55 »

спасибо. Но где это объявить? в class MainWindow : public QMainWindow ( mainwindow.h )?
« Последнее редактирование: Май 19, 2020, 10:57 от nelogic » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Май 19, 2020, 11:21 »

Выложи сюда свой mainwindow.h и мы покажем.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
nelogic
Новичок

Offline Offline

Сообщений: 7


Просмотр профиля
« Ответ #6 : Май 19, 2020, 11:33 »

вроде вот ( абсолютно полный mainwindow.h )
Код
C++ (Qt)
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
   Q_OBJECT
 
public:
   explicit MainWindow(QWidget *parent = 0);
   ~MainWindow();
 
private slots:
   QList<QPushButton *> buttons;
   void on_pushButton_clicked();
   void on_pushButton_2_clicked();
   void on_pushButton_3_clicked();
   void on_pushButton_4_clicked();
   void on_pushButton_5_clicked();
   void on_pushButton_6_clicked();
   void on_pushButton_7_clicked();
   void on_pushButton_8_clicked();
   void on_pushButton_9_clicked();
   void on_pushButton_10_clicked();
   void on_pushButton_11_clicked();
   void on_pushButton_12_clicked();
   void on_pushButton_13_clicked();
   void on_pushButton_14_clicked();
   void on_pushButton_15_clicked();
   void on_pushButton_16_clicked();
   void on_pushButton_17_clicked();
   void on_pushButton_18_clicked();
   void on_pushButton_19_clicked();
   void on_pushButton_20_clicked();
   void on_pushButton_21_clicked();
   void on_pushButton_22_clicked();
   void on_pushButton_23_clicked();
   void on_pushButton_24_clicked();
   void on_pushButton_25_clicked();
   void on_pushButton_26_clicked();
   void on_pushButton_27_clicked();
   void on_pushButton_28_clicked();
   void on_pushButton_29_clicked();
   void on_pushButton_30_clicked();
   void on_pushButton_31_clicked();
   void on_pushButton_32_clicked();
   void on_pushButton_33_clicked();
   void on_pushButton_34_clicked();
   void on_pushButton_35_clicked();
   void on_pushButton_36_clicked();
   void on_pushButton_37_clicked();
   void on_pushButton_38_clicked();
   void on_pushButton_39_clicked();
   void on_pushButton_40_clicked();
   void on_pushButton_41_clicked();
   void on_pushButton_42_clicked();
   void on_pushButton_43_clicked();
   void on_pushButton_44_clicked();
   void on_pushButton_45_clicked();
   void on_pushButton_46_clicked();
   void on_pushButton_47_clicked();
   void on_pushButton_48_clicked();
 
   void on_pushButton_49_clicked();
   void on_pushButton_50_clicked();
 
 
 
 
private:
   Ui::MainWindow *ui;
};
 
#endif // MAINWINDOW_H
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Май 19, 2020, 11:42 »

Код
C++ (Qt)
private:
   Ui::MainWindow *ui;
   QList<QPushButton *> buttons;
};
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
nelogic
Новичок

Offline Offline

Сообщений: 7


Просмотр профиля
« Ответ #8 : Май 19, 2020, 13:15 »

2 новые ошибки
ошибка: 'PushButton' was not declared in this scope
ошибка: template argument 1 is invalid
поясните пожалуйста...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Май 19, 2020, 13:31 »

Код
C++ (Qt)
QList<class QPushButton *> buttons;
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
nelogic
Новичок

Offline Offline

Сообщений: 7


Просмотр профиля
« Ответ #10 : Май 19, 2020, 14:17 »

огромное спасибо...
последний вопрос. Как нужно изменить функцию
Код
C++ (Qt)
void MainWindow::on_pushButton_2_clicked()
{
       if (z1 == true){
           z2 = true;
       ui->pushButton_2->hide();
       }
 
чтобы она прятала именно кнопку с номером 2, а не pushButton_2?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #11 : Май 19, 2020, 14:21 »

Нужно циклом пробежаться по всем кнопкам, получить их text, найти ту, где text будет "2" и для нее вызвать hide. Задача не сложная, сам справляйся.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
nelogic
Новичок

Offline Offline

Сообщений: 7


Просмотр профиля
« Ответ #12 : Май 19, 2020, 14:37 »

так вы и ответили так то.... Огромное спасибо. Вопрос закрыт
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.148 секунд. Запросов: 23.