How do I create a custom slot in qt4 designer?

35,327

Solution 1

Unfortunately this is not possible in Qt4.

In Qt3 you could create custom slots which where then implemented in the ui.h file. However, Qt4 does not use this file so custom slots are not supported.

There is some discussion of this issue over on QtForum

Solution 2

right click on the main window and select "change signals and slots" and add a new slot. It will appear in your signal slot editor.

Solution 3

This does seem to be possible in the version of Qt Designer 4.5.2, but it can't be done from the Signal/Slot Editor dock-widget in the main window.

This is what worked for me

  1. Switch to Edit Signals/Slots mode (F4)
  2. Drag and drop from the widget which is to emit the signal, to the widget which is to receive the signal.
  3. A Configure Connection dialog appears, showing the signals for the emitting widget, and the slots for the receiving widget. Click Edit... below the slots column on the right.
  4. A Signals/Slots of ReceivingWidget dialog appears. In here its is possible to click the plus icon beneath slots to add a new slot of any name.
  5. You can then go back and connect to your new slot in the Configure Connection dialog, or indeed in the Signal/Slot Editor dockwidget back in the main window.

Caveat: I'm using PyQt, and I've only tried to use slots added in this way from Python, not from C++, so your mileage may vary...

Solution 4

I am able to do it by:

In MainWindow.h, add the line:

public slots:
     void example();

in the MainWindow class.

In MainWindow.cpp

void MainWindow::example() {
     <code>
}

Solution 5

This doesn't seem to be possible in a simple way.

The designer only allows you to promote existing widgets to your own custom widgets. yet it doesn't allow you to connect the signals and slots of the class of promoted widgets.

The way this is possible is creating a plugin for the designer as is described here and in the pages that follow it.

The normal course of action is to promote a widget to your own class and then to connect it manually in your own code. this process is described here

Share:
35,327
user24560
Author by

user24560

Updated on July 09, 2022

Comments

  • user24560
    user24560 almost 2 years

    Whenever I use the signal/slot editor dialog box, I have to choose from the existing list of slots. So the question is how do I create a custom named slot?

  • user24560
    user24560 over 15 years
    The qt4 designer supports reading custom slots created in forms ported from qt3. It gave me this impression that it was also possible to create one.
  • James
    James over 14 years
    Both of the "Edit..." buttons in the Configure Connection dialog box are always grayed out for me.
  • Admin
    Admin over 12 years
    Edit button in Configure Connection is disabled .How did you click it?
  • tom stratton
    tom stratton almost 12 years
    I had the greyed buttons too but finally noticed that if I connect the Signal to the main window I can add slots using the method given here. Seems to work as expected but does mean that you get a lot of methods in the main window instead of in individual widgets.
  • OliJG
    OliJG almost 11 years
    See comment by raigon below, this is currently possible.
  • Honest Abe
    Honest Abe over 8 years
    If the edit button is disabled, then you probably didn't properly accomplish step 2. When the Configure Connection window appears, look at the names of the two columns. The name of the right column is supposed to be the owner of the custom slot.
  • ssokolow
    ssokolow over 7 years
    For anyone who wanders in off Google, under Qt 5, you have to use the the "promote widget" feature to make the widget in the editor an alias for a custom class before the "Edit..." button will become clickable on built-in widgets other than the top-level window.