2012-01-18 21 views
0

私はqt 3.3で作業しています。私は、このフラグがメインアプリケーションのためにアクセスするため、常にnullの親が表示されていない状態(WStyle_StaysOnTop)でQDialogウィジェットを作成する必要があります。 QDialogウィジェットのスクリーンキーボード機能が必要です。null親が常に表示されるQDialogウィジェット

+0

あなたはいつも見えるが上にとどまるない "とはどういう意味ですか? – Donotalo

+0

これは常に一番上にとどまるが、メインアプリケーションにアクセスできることを意味する。 – Nik

+0

あなたは 'Qt :: WStyle_StaysOnTop'と' Qt :: WX11BypassWM'の両方を試しましたか?チェック:http://doc.trolltech.com/3.3/qt.html#WidgetFlags-enum – Donotalo

答えて

1

質問を正しく理解していただきたいと思います。ここでは、あなたが望むものの最小の例があります。

MainWindow::MainWindow(QWidget *parent) : 
QMainWindow(parent), 
ui(new Ui::MainWindow) 

{

UI-> setupUi(本)

QDialog *dia = new QDialog(this); 
//Set the windowflags 
dia->setWindowFlags(dia->windowFlags() | Qt::Tool); 

dia->show(); 

QWidget *central = new QWidget; 
QHBoxLayout *mainLayout = new QHBoxLayout; 
QLineEdit *edit = new QLineEdit; 

//Add sample QLineEdit to test the input focus for mainwindow 
mainLayout->addWidget(edit); 
central->setLayout(mainLayout); 
setCentralWidget(central); 

}

編集:

あなたがシステムトレイからの質問にダイアログを最小化し、最大化することができるようにしたい場合、あなたはそれのためQSystrayIconし、コンテキストメニューを作成する必要があります。

MainWindow::MainWindow(QWidget *parent) : 
QMainWindow(parent), 
ui(new Ui::MainWindow) 

{ ui-> setupUi(this);

QDialog *dia = new QDialog(this); 

dia->setWindowFlags(dia->windowFlags() | Qt::Tool); 

dia->show(); 

QWidget *central = new QWidget; 
QHBoxLayout *mainLayout = new QHBoxLayout; 
QLineEdit *edit = new QLineEdit; 
mainLayout->addWidget(edit); 
central->setLayout(mainLayout); 
setCentralWidget(central); 

//Create the icon for systray 
//NOTE this icon is application wide 
QSystemTrayIcon *icon = new QSystemTrayIcon(QIcon(QPixmap("/usr/share/icons/oxygen/22x22/status/user-away.png")), dia); 

icon->setVisible(true); 

//Create context menu to manipulate the dialog 
QMenu *contextMenu = new QMenu; 

QAction *minimizeDialog = contextMenu->addAction("Minimize dialog"); 
QAction *restoreDialog = contextMenu->addAction("Restore dialog"); 

connect(minimizeDialog, SIGNAL(triggered()), dia, SLOT(hide())); 
connect(restoreDialog, SIGNAL(triggered()), dia, SLOT(show())); 

//Add it to the icon 
icon->setContextMenu(contextMenu); 

}

+0

入力フォーカスを切り替えることはできますが、ダイアログは常に上に表示されます – Neox

+0

すばらしい!助けていただきありがとうございました。あなたの提案によると、QDialogは一番上にあり、メインアプリケーションにもアクセスできますが、そのQDialogウィジェットをシステムトレイに最小化する必要もあります。 – Nik

+0

あなたの素晴らしい仕事をありがとうが、Qt 3.3を使用しており、QSystemTrayIconは利用できません。 – Nik

関連する問題