3

2 つの異なる QMainWindow に 2 つの QPushButton を作成しました。特定の間隔でランダムにフォーカスを割り当てています。コードは次のとおりです。

int main(int argc, char **argv){

QApplication a(argc, argv);
QMainWindow *win1= new QMainWindow();
win1->resize(567,578);
win1->move(67,30);
win1->show();

QMainWindow *win2= new QMainWindow();
win2->resize(567,578);
win2->move(97,580);
win2->show();
win1->show();
//win2->setModal(true);

QPushButton *but1 =  new QPushButton(win1);
but1->resize(80,20);
but1->move(100,100);
but1->setText("1");
but1->show();

QPushButton *but2 =  new QPushButton(win2);
but2->resize(80,20);
but2->move(100,300);
but2->setText("2");
but2->show();


while(1){
    if((rand()%2) == 1){
        //win2->lower();
        win1->raise();
        win1->activateWindow();
        win1->setWindowState(Qt::WindowActive);
        win1->setFocus(Qt::ActiveWindowFocusReason);
        but1->setFocus(Qt::ActiveWindowFocusReason);

    }
    else{
        //win1->lower();
        win2->raise();
        win2->activateWindow();
        win2->setFocus(Qt::ActiveWindowFocusReason);
        but2->setFocus(Qt::ActiveWindowFocusReason);

    }

    qApp->processEvents(0x00);
    sleep(2);
}

しかし問題は、最初のウィンドウのタイトル バーの色が変わらないことです (通常、ウィンドウをビジュアル スタックに前後に移動すると、視覚的に一番上のウィンドウになった場合でも、タイトル バーの色が変わります)。

4

1 に答える 1