Извините, Хавьер за короткие комментарии. Каждый раз, когда я намеревался разбить строку, комментарий был представлен: - (
Я пробовал этот код в проекте, созданном с помощью QtCreator:
class MyWidgetAction : public QWidgetAction
{
public:
MyWidgetAction( QObject * parent ) :QWidgetAction ( parent )
{
}
void releaseWidget ( QWidget * widget )
{
widget->deleteLater();
}
QWidget * requestWidget ( QWidget * parent )
{
QPushButton *b = new QPushButton( tr("MyWidget"), parent );
b->show();
return b;
}
};
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QAction *a = new QAction(tr("TestAction"),this); //1
QWidgetAction * wa = new QWidgetAction(this); //2
wa->setDefaultWidget(new QPushButton("Default"));
MyWidgetAction *mwa = new MyWidgetAction(this); //3
ui->menuBar->addAction( a ); //1 - works. TestAction added to menu bar
ui->menuBar->addAction( wa ); //2 - noop. nothing added to menu bar
ui->menuBar->addAction( mwa ); //3 - noop. nothing added to menu bar
}
Работало только добавление QAction (1). Ни добавление QWidgetAction с виджетом по умолчанию без наследования QWidgetAction не дало результата. Я установил точки останова в C-Tor и обе виртуальные функции MyWidgetAction. Удивительно, но была достигнута только точка останова C-Tor.
Я пробовал на Windows с открытым исходным кодом, MinGW версия Qt4.6.3
Может ли это быть ошибкой в Qt?
Заранее большое спасибо за любые предложения!
С уважением,
Валентин Хайниц