Opening dynamically created buttons
-
-
@Kushan
The connect statement @Fuel shows is how you would
make the same as right clicking in Designer.
( sort of, as Designer makes a special name and its found at runtime and hooked up)So you hook up each button to different slots and hence different things will happen when you click it.
If you have many , it might be awkward creating that many slots.
You can also use
sender() inside a slot to know whom sent it. But the answer is just some Buttons so
in what way do you need to distinguish the buttons ? -
Just after
a= new QPushButton();
connect(a, SIGNAL(clicked()), this, SLOT(mySlot()));Note that you should create a slot in Dialog .h
called
void mySlot();
and in Dialog.cppvoid mySlot() {
}Just like when you rightclick,
Designer adds such function to the class.h and in .cpp -
@mrjj Thanx! But the problem I face is if 2 buttons that are dynamically created and I want one to perform a specific function when it is clicked and the other button to perform another action when its clicked! how can I achieve it? Here "a"is cmmon to both in such a scenario
-
@Kushan
Hi
you could simply make another slot
and connect to that instead.
connect(a, SIGNAL(clicked()), this, SLOT(mySlot2()));But how do you know what the button you are creating should do ?
its it part of the data you read in ? -
@mrjj The buttons are displaying the names of elements in the qstringlist! Each element has a method name! so when I click a button a method resembling that method name shouldget executed!
eg-List<<"Run"<< "Stop"
so 2 buttons are created displaying Run and Stop! so when I click the button displaying with the word "Run" the Run() method should execute and when I click the button displaying the word "Stop" the Stop() method should execute.
-
@Kushan You should use http://doc.qt.io/qt-5/qsignalmapper.html