2014-01-06 2 views
1

Я использовал QWidget-шоу в качестве диалога. И поставьте QAxWidget в качестве подвикета. Но если я устанавливаю прозрачный родительский виджет, QAxWidget не будет отображаться.QAxWidget не отображается

QWidget* widget = new QWidget; 
widget->setAttribute(Qt::WA_TranslucentBackground); 
......; 

QAxWidget* axieBrowser= new QAxWidget(widget); 
axieBrowser->setControl(QString::fromUtf8("{8856F961-340A-11D0-A96B-00C04FD705A2}")); 
axieBrowser->dynamicCall("Navigate(const QString&)", "www.google.com"); 

Прошу, если вы используете другой виджет, который будет отображаться, только QAxWidget не отображается! Как я мог это сделать ?

+0

Это то же самое, что и у любого другого виджета, такого как QLabel внутри QWidget Outter? – lpapp

+1

Это может быть ограничение виджета ActiveX - но для полной уверенности вам нужен Internet Explorer или ActiveX? Если вам просто нужно отображать веб-страницы, нейтральные с поставщиками, библиотека QtWebkit выполняет хорошую работу. –

+0

@LaszloPapp Я использую другой виджетов, таких как ярлык, который будет отображаться. @ John Chadwick Да, я должен использовать Internet Explorer, не могу использовать QWebView. – lvshuchengyin

ответ

0

@Dariusz Scharsig Я использую эту функцию, чтобы заставить QWidget быть свежим, потому что repaint() не действует.

void CMyDialog::changeRectToFresh() 
{ 
    this->showNorMal(); 
    QRect rect = this->geometry(); 
    this->setGeometry(rect.adjusted(-1,-1,1,1); 
    //recover 
    this->setCeometry(rect); 
}