BlackDal ColorPickerに基づいて、カラー ピッカー メニューを実装しました。
色が選択されたときに信号を送信するために、次を追加しました。
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 で "More..." を選択し、呼び出された から色を選択するとQColorDialog
、接続されたスロットfillColorButtonTriggered
は呼び出されません。代わりに、私の MDI アプリケーションでは、別のドキュメントがアクティブ ウィンドウになります。それはすべきですが:
void RColorPickerPopup::mousePressEvent ( QMouseEvent *event )
{
...
QColorDialog *dialog = new QColorDialog( this );
if( dialog->exec() )
{
hoverColor = dialog->selectedColor();
delete dialog;
emit selected( hoverColor );
this->close();
QColorDialog
をネイティブの WindowsChooseColor
ダイアログに置き換えると、問題は発生しません。
ここで何が問題なのか、ヒントはありますか?