【发布时间】:2015-01-24 12:30:17
【问题描述】:
我正在尝试禁用用户之前选择的按钮
void pracownik2::on_pushButton_4_clicked(){
this->setWindowTitle("EKRAN");
QWidget *centralWidget = new QWidget;
int licznik=1;
QString licz;
//QString kolumny = ui->lineEdit->text();
//QString wiersze = ui->lineEdit_2->text();
miejsca2 = ui->lineEdit_3->text().toInt();
//QPushButton *button[wiersze.toInt()][kolumny.toInt()];
QPushButton *button[3][6];
QGridLayout *controlsLayout = new QGridLayout;
for(int i=0;i<3;i++)
{
for(int j=0;j<6;j++)
{
licz = QString::number(licznik);
licznik++;
button[i][j] = new QPushButton(licz);
button[i][j]->setCheckable(1);
if(tab[i][j]==1)
button[i][j]->setEnabled(false);
controlsLayout->addWidget(button[i][j], i, j);
}
}
QPushButton *okej = new QPushButton("Zatwierdź");
QPushButton *anul = new QPushButton("Anuluj");
controlsLayout->addWidget(okej, 3, 0);
controlsLayout->addWidget(anul, 3, 1);
controlsLayout->setHorizontalSpacing(0);
controlsLayout->setVerticalSpacing(0);
centralWidget->setLayout(controlsLayout);
setCentralWidget(centralWidget);
for(int i=0;i<3;i++)
{
for(int j=0;j<6;j++)
{
connect(button[i][j],SIGNAL(toggled(bool)),this,SLOT(tescik(bool)));
}
}
connect(anul,SIGNAL(clicked()),this,SLOT(close()));
connect(okej,SIGNAL(clicked()),this,SLOT(okay2()));}
void pracownik2::tescik(bool t){
if (t)
{
tab[i][j]=1;
miejsca++;
}
else
{
tab[i][j]=0;
miejsca--;
}}
但是我的 'tescik' 函数不知道 'i' 和 'j' 是什么并且项目不会编译,我的问题是如何使选中的按钮在数组中设置值为 1 并且未选中将其恢复为 0 . 我想我必须编辑“连接”行,但我不知道怎么做
@编辑 我正在尝试制作这条线
connect(button[i][j],SIGNAL(toggled(bool)),this,SLOT(tescik(bool,int i,int j)));
将当前按钮的“i”和“j”传递给功能,但它不起作用
【问题讨论】:
-
connect(button[i][j], SIGNAL(toggled(bool)), button[i][j], SLOT(setDisabled(bool)));另外 -
你能多写点关于它的东西吗,因为我不明白
-
如果按下后会被禁用,那么如何将数组中的值恢复为0?
-
@CentusDBWA 执行您之前的通话: connect(button[i][j],SIGNAL(toggled(bool)),this,SLOT(tescik(bool))); } 工作?
-
因为更改数组值不会立即执行任何操作,所以当第二次显示按钮时,其中一些按钮未启用@AB_ 是的,它可以工作
标签: c++ arrays qt dynamic qpushbutton