Pergunta

Sempre que eu usar a caixa de diálogo editor de sinal / slot, eu tenho que escolher entre a lista existente de slots. Então a questão é como faço para criar um personalizado ranhura chamado?

Foi útil?

Solução

Infelizmente não é possível em Qt4.

Em Qt3 você poderia criar ranhuras personalizados que, onde, em seguida, implementados no arquivo ui.h. No entanto, Qt4 não usa esse arquivo para ranhuras personalizados não são suportados.

Há alguma discussão desta questão sobre a QtForum

Outras dicas

Esta parece ser possível na versão do Qt Designer 4.5.2, mas não pode ser feito a partir do Signal / Slot Editor de doca-widget na janela principal.

Isto é o que funcionou para mim

  1. Mudar para Editar Signals modo / Slots (F4)
  2. Arraste e solte a partir do widget que é a de emitir o sinal, ao widget que é para receber o sinal.
  3. aparece
  4. A Configurar conexão de diálogo, mostrando os sinais para a emissão de widget, e os slots para o widget de recepção. Clique Editar ... abaixo da coluna entalhes à direita.
  5. Sinais / Slots de ReceivingWidget aparece diálogo A. Em aqui a sua é possível clicar no ícone mais baixo ranhuras para adicionar um novo slot de qualquer nome.
  6. Você pode então voltar e se conectar ao seu novo slot no Configurar conexão de diálogo, ou mesmo no Signal / Slot Editor de dockwidget volta na janela principal.

Aviso: Eu estou usando PyQt, e eu só tentei usar ranhuras adicionados desta forma de Python, não do C ++, assim que sua milhagem pode variar ...

clique direito na janela principal e selecione "sinais de mudança e slots" e adicionar um novo slot. Ele aparecerá no seu editor de slot de sinal.

Eu sou capaz de fazê-lo por:

Em MainWindow.h, adicione a linha:

public slots:
     void example();

na classe MainWindow.

Em MainWindow.cpp

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

Este não parece ser possível em uma maneira simples.

O designer só lhe permite promover widgets existentes para seus próprios widgets personalizados. no entanto, não permite que você conecte os sinais e slots da classe de widgets promovidos.

A forma como isso é possível é a criação de um plugin para o designer como é descrito aqui e nas páginas que se seguem.

O curso normal da ação é promover um widget para sua própria classe e, em seguida, conectá-lo manualmente em seu próprio código. Este processo é descrito aqui

Não é possível fazê-lo, porque significa que você gostaria de acrescentar um slot a uma classe Qt existente como QPushButton que não é realmente o caminho a percorrer.

Você deve criar o seu próprio QWidget acabou por subclasse um já existente. Em seguida, integrando-os em Qt Designer como um plugin como sugerido. Ter sua própria classe permite que você adicione / modifiy os sinais / lugares disponíveis como você quer.

Não se esqueça sobre as características auto-conexão caça-níqueis. Existem algumas desvantagens, como ter que mudar o nome da função se você mudar o nome do widget, mas nós usamos aqueles muito na minha empresa.

Você pode usar o formato de slot de magia

void on_objectName_signal() {
// slot code here, where objectname is the Qt Designer object name
// and the signal is the emission
}

A conexão com este método é estabelecido pelo método connectSlotsByName e sempre que o sinal é emitido, esta fenda é invocada.

Talvez ele vai ajudar.

Por padrão, você tem que escolher entre a lista existente de slots. Mas você pode adicionar ranhura clicando com o botão direito em você objeto na lista no lado direito da designer e escolha "slot / sinais" e adicionar seu sinal / slot personalizado. Depois disso, você pode escolhê-lo no editor de sinal / slot.

clique no widget por botão direito

promover o widget em uma classe definida

clique no widget por botão direito novamente

Você vai ver que o sinal e slot é editável

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top