Пишу программку, смысл её в том что парсится xml файл в котором прописаны пути к программам которые должны запускаться по нажатию кнопки.
<Programm name="Gedit" patch="/usr/bin/gedit" icon="gedit.ico" title="Запускает текстовый редактор">
Каждую кнопку создаю сразу после получения очередных данных с xml
void MainWindow::ReadXml()
{
QString title,ico,patch,name;
QFile file("a.xml");
file.open(QIODevice::ReadOnly);
QXmlStreamReader XmlRead(&file);
while(!XmlRead.atEnd())
{
XmlRead.readNext();
if (XmlRead.isStartElement())
if (XmlRead.name()=="Programm")
{
title = XmlRead.attributes().value("title").toString();
ico = XmlRead.attributes().value("icon").toString();
patch = XmlRead.attributes().value("patch").toString();
name = XmlRead.attributes().value("name").toString();
ShowElements(name, ico, title, patch);
}
}
}
void MainWindow::ShowElements(QString name, QString icon, QString title, QString patch)
{
QPushButton *button = new QPushButton(name,this);
QObject::connect(button,SIGNAL(clicked()),this,SLOT(StartProgramm(Сюда нужно передать параметр)));
button->show();
}
Все работает отлично за исключением обработки "Слота" кнопки, то-есть у меня есть функция
void MainWindow::StartProgramm(QString ProgramPatch)
{
QProcess *process = new QProcess();
process->start(ProgramPatch);
}
Которая и должна была послужить "слотом" для кнопки но как я понял в слот нельзя напрямую передать параметр (в моем случае patch из xml).
Вопрос - как реализовать динамическое создание слотов? Я почитал доки но что-то не совсем въехал в технологию.
Извиняюсь если как-то неясно описал проблему, в коментах если что уточню )