画面の数や解像度が変わるたびに、ウィンドウのサイズを変更したいと考えています。QtCreator で最小限の C++ アプリケーションを作成しました。次に、これらの行を MainWindow コンストラクターに追加しました
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
QDesktopWidget* desktop = QApplication::desktop();
QObject::connect(desktop, SIGNAL(screenCountChanged(int)), this, SLOT(updateScreens()));
QObject::connect(desktop, SIGNAL(resized(int)), this, SLOT(updateScreens()));
}
そして、ここに関数があります:
void MainWindow::updateScreens() {
qDebug() << "Here";
}
.h ファイルのスロットとして定義しました。
class MainWindow: public QMainWindow
{
Q_OBJECT
.......
public slots:
void updateScreens();
}
プロジェクトを Qt 4.8.4 (Mingw) でコンパイルして実行し、解像度を変更すると、Here
出力が得られます。Qt 5.1.1 (Mingw) で再コンパイルして実行すると、まったく同じ方法で解像度を変更しても何も起こりません。
これは新しいリリースのバグですか? 今、何か違うことをする必要がありますか? システム: Windows7 x64 mingw 上の Qt 5.1.1。