Russian Qt Forum

Qt => Вопросы новичков => Тема начата: nelogic от Май 19, 2020, 03:31



Название: Кнопки в qt creator для новичков
Отправлено: nelogic от Май 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;}
       }
   }
}
 


Название: Re: Кнопки в qt creator для новичков
Отправлено: Пантер от Май 19, 2020, 08:28
Ты видимо удалил определение buttons. Вангую, что это член класса MainWindow.


Название: Re: Кнопки в qt creator для новичков
Отправлено: nelogic от Май 19, 2020, 09:17
проблема в том что я не трогал код...
И у меня не получилось ( давно я не программировал толком, поэтому многое забыл.... Хотя учитывая мой очень великий опыт и знания восстанавливать все это мне долго не придется...... ) так вот. Как добавить это определение туда вернуть правильно?
Да и если не поможете все равно спасибо. Теперь хоть примерно представляю куда копать...


Название: Re: Кнопки в qt creator для новичков
Отправлено: kambala от Май 19, 2020, 10:14
QList<QPushButton *> buttons;


Название: Re: Кнопки в qt creator для новичков
Отправлено: nelogic от Май 19, 2020, 10:55
спасибо. Но где это объявить? в class MainWindow : public QMainWindow ( mainwindow.h )?


Название: Re: Кнопки в qt creator для новичков
Отправлено: Пантер от Май 19, 2020, 11:21
Выложи сюда свой mainwindow.h и мы покажем.


Название: Re: Кнопки в qt creator для новичков
Отправлено: nelogic от Май 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


Название: Re: Кнопки в qt creator для новичков
Отправлено: Пантер от Май 19, 2020, 11:42
Код
C++ (Qt)
private:
   Ui::MainWindow *ui;
   QList<QPushButton *> buttons;
};
 


Название: Re: Кнопки в qt creator для новичков
Отправлено: nelogic от Май 19, 2020, 13:15
2 новые ошибки
ошибка: 'PushButton' was not declared in this scope
ошибка: template argument 1 is invalid
поясните пожалуйста...


Название: Re: Кнопки в qt creator для новичков
Отправлено: Пантер от Май 19, 2020, 13:31
Код
C++ (Qt)
QList<class QPushButton *> buttons;
 


Название: Re: Кнопки в qt creator для новичков
Отправлено: nelogic от Май 19, 2020, 14:17
огромное спасибо...
последний вопрос. Как нужно изменить функцию
Код
C++ (Qt)
void MainWindow::on_pushButton_2_clicked()
{
       if (z1 == true){
           z2 = true;
       ui->pushButton_2->hide();
       }
 
чтобы она прятала именно кнопку с номером 2, а не pushButton_2?


Название: Re: Кнопки в qt creator для новичков
Отправлено: Пантер от Май 19, 2020, 14:21
Нужно циклом пробежаться по всем кнопкам, получить их text, найти ту, где text будет "2" и для нее вызвать hide. Задача не сложная, сам справляйся.


Название: Re: Кнопки в qt creator для новичков
Отправлено: nelogic от Май 19, 2020, 14:37
так вы и ответили так то.... Огромное спасибо. Вопрос закрыт