0

HyQtマスター..

ラベル(ピックスマップ)をオンオフオンオフオンにしたいのですが、どうすればよいですか?

私はこのコードを使ってみました:

Sleeper::sleep(2);
    ui->label->setPixmap(QPixmap("C:/Users/EVAN/Pictures/New folder/85.png"));
    Sleeper::sleep(2);
    ui->label->setPixmap(QPixmap("C:/Users/EVAN/Pictures/New folder/87.png"));
    Sleeper::sleep(2);
    ui->label->setPixmap(QPixmap("C:/Users/EVAN/Pictures/New folder/85.png"));
    Sleeper::sleep(2);
    ui->label->setPixmap(QPixmap("C:/Users/EVAN/Pictures/New folder/87.png"));

それはうまくいきませんか?どうすればそれを解決できますか?皆さんありがとう


これが問題です :

if(I==4)
        {
            QTimer *timer1 = new QTimer(this);
            connect(timer1, SIGNAL(timeout()), this, SLOT(OnTimer()));
            timer1->start(1000);
            blink=true;
            port->write(send);
        }
else if(I==5)
        {
            ui->label->setPixmap(QPixmap("../../picture/green.png"));
            port->write(send);
        }

...........................................。

void traffic1::OnTimer()
{

        ui->label->setPixmap(QPixmap(blink ? "../../picture/dark.png" : "../../picture/yellow.png"));
        blink = !blink;

}

I = 4の場合、Qtimerは正常に実行されますが、I = 5の場合、Qtimerは引き続きアクティブです。

4

1 に答える 1

2

まず、次のようなブールメンバー変数を追加しbool blink;ます。QTimerを作成し、そのtimeout()信号を次のようなスロット関数に接続します。

// constructor:
YourClass::YourClass()
{
       QTimer *timer = new QTimer(this);
       connect(timer, SIGNAL(timeout()), this, SLOT(OnTimer()));
       timer->start(1000);
       blink = false;
}

.......。

void YourClass::OnTimer()
{
  ui->label->setPixmap(QPixmap(blink ? "C:/Users/EVAN/Pictures/New folder/85.png" : "C:/Users/EVAN/Pictures/New folder/87.png"));
  blink = !blink;
}

編集:タイマーを制御したい場合は、最初にクラスのヘッダーで宣言する必要があります

class YourClass
{
  QTimer *timer;
   ...
};

そしてそれを作成したいとき:

YourClass::YourClass()
{
       timer = new QTimer(this);
       connect(timer, SIGNAL(timeout()), this, SLOT(OnTimer()));
       timer->start(1000);
       blink = false;
}

それを止めるために:

  timer->stop();
于 2012-06-05T04:18:50.620 に答える