【发布时间】:2012-12-13 11:10:55
【问题描述】:
我实现了一个颜色选择器菜单,基于BlackDal ColorPicker
In order to send a signal, when a color has been selected, i added:
class RColorPicker : public QPushButton
{
Q_OBJECT
signals:
void selected( QColor color);
...
和
void RColorPicker::on_popup_selected( QColor color )
{
_selectedColor = color;
repaint();
emit selected( color );
我在其他地方连接到该信号,例如
fillColorButton = new RColorPicker()
connect(fillColorButton , SIGNAL(selected(QColor)), this, SLOT(fillColorButtonTriggered(QColor)) );
当从 PopUpMenu 中选择一种颜色时,此方法有效,但如果我在 PopUp 中选择“更多...”,然后从调用的 QColorDialog 中选择一种颜色,则不会调用连接的插槽 fillColorButtonTriggered。 Instaed,在我的 MDI 应用程序中,一个不同的文档成为活动窗口。虽然它应该:
void RColorPickerPopup::mousePressEvent ( QMouseEvent *event )
{
...
QColorDialog *dialog = new QColorDialog( this );
if( dialog->exec() )
{
hoverColor = dialog->selectedColor();
delete dialog;
emit selected( hoverColor );
this->close();
如果我用原生 Windows ChooseColor 对话框替换 QColorDialog,则不会出现问题。
谁有提示,这里有什么问题?
【问题讨论】:
标签: qt signals-slots qcolordialog