Я довольно новичок в c++ and qt
. Я не уверен, пользуюсь ли я правильной терминологией описанием того, чего я хочу достичь. Но здесь все идет.Qt сигналы и слоты, передающие данные
Мое приложение spawns and removes widgets in a gridlayout
, когда пользователь pushes buttons
. Удалось сделать это успешно. Однако, когда пользователь использует порожденные виджеты, мне нужен widgets to interact with each other
.
QList<QLineEdit*> m_ptrLEPathList;
QList<QPushButton*> m_ptrPBList;
qint8 m_noFields;
void MainWindow::on_pbIncFields_clicked()
{
//create widgets and place on a new row in a gridLayout
QLineEdit *lineEditPath = new QLineEdit(this);
QPushButton *pushButton = new QPushButton(this);
//storing pointers in lists to be able to delete them later.
m_ptrLEPathList.append(lineEditPath);
m_ptrPBList.append(pushButton);
ui->gridLayout->addWidget(m_ptrLEPathList.last(),m_noFields,0);
ui->gridLayout->addWidget(m_ptrPBList.last(),m_noFields,1);
connect(m_ptrPBList.last(), SIGNAL(clicked(bool), this, SLOT(on_addPath()));
m_noFields++;
}
void MainWindow::on_pbDecFields()
{
//delete last spawned widgets
}
void MainWindow::on_addPath()
{
QFileDialog getPath();
getPath.exec();
//somehow set the text of the line edit spawned on the same row as the pushbutton
}
Так что мой слот выполняется, когда я нажимаю любую кнопку порождены, но я не знаю, как store the data from the file dialog in the related lineEdit
.
Является основной идеей того, что я пытаюсь сделать нормально, или есть ли какое-либо другое решение для достижения fuctionality, которое я ищу?
Да список должен оставаться одинакового размера. Пробовал ваше решение, и он работал красиво! Спасибо. – flog