hi,
hab mir schon Nadel und Faden besorgt
Es geht ja auch ein bisschen um das Design und die Übersichtlichkeit.
Das sieht doch wohl wesentlich besser und übersichtlicher aus ...
Code:
struct Buttons
{
typedef void (OptionChangeWindow::*PtrToSlot)( void);
QString Name;
PtrToSlot Slot;
};
Buttons MyButtons[2] =
{
{"Hinzufügen", &OptionChangeWindow::AddOption},
{"Ändern", &OptionChangeWindow::ChangeOption},
};
for(unsigned int i = 0; i < sizeof(MyButtons) / sizeof(Buttons); ++i)
{
//Einen neuen Button erzeugen mit entsprechendem Namen
mCommands.push_back(boost::shared_ptr<QPushButton>(new QPushButton(this, MyButtons[i].Name)));
mCommands[i]->setGeometry(130, 20+40*i, 70, 30);
mCommands[i]->show();
mCommands[i]->setText(MyButtons[i].Name);
connect(mCommands[i].get(), SIGNAL(clicked()), this, SLOT( MyButtons[i].Slot ) );
// Verursacht: "QObject::connect: Parentheses expected, slot OptionChangeWindow::MyButtons[i].Slot"
}
als das:
Code:
struct Buttons
{
typedef void (OptionChangeWindow::*PtrToSlot)( void);
QString Name;
PtrToSlot Slot;
};
Buttons MyButtons[2] =
{
{"Hinzufügen", &OptionChangeWindow::AddOption},
{"Ändern", &OptionChangeWindow::ChangeOption},
};
for(unsigned int i = 0; i < sizeof(MyButtons) / sizeof(Buttons); ++i)
{
//Einen neuen Button erzeugen mit entsprechendem Namen
mCommands.push_back(boost::shared_ptr<QPushButton>(new QPushButton(this, MyButtons[i].Name)));
mCommands[i]->setGeometry(130, 20+40*i, 70, 30);
mCommands[i]->show();
mCommands[i]->setText(MyButtons[i].Name);
//TODO klappt noch nicht so ganz!
//connect(mCommands[i].get(), SIGNAL(clicked()), this, SLOT( MyButtons[i].Slot ) );
}
//Ich geb mich erstmal geschlagen und connecte sie manuell
connect(mCommands[0].get(), SIGNAL(clicked()), this, SLOT(AddOption()));
connect(mCommands[1].get(), SIGNAL(clicked()), this, SLOT(ChangeOption()));
oder etwa nicht?
Des Weiteren ist es einfacher zu warten, das spielt auch eine gewisse Rolle.
Außerdem habe ich das jetzt solange ausprobiert, dass es mich brennend interessiert, wie das funktionieren könnte, ob es etwas nutzt oder nicht. Ich würde es gerne wissen.
Tschau Gartenzwerg
Lesezeichen