71842


Qtのラベルで全体ではなく、指定の文字を点滅させたいのですが何かいい方法は無いでしょうか  
ラベル全体を点滅させるのはsetVisible関数をタイマーで呼び出して  
true/falseを入れ替えれば簡単にできたのですが  
特定の文字を点滅させる方法は無いでしょうか

abcdと言う文字列であれば  
3文字目を点滅させたいと言う風にしたいです


CC BY-SA 4.0
2020-11-10T08:58:47.263
71841
2020-11-10T09:15:07.787
15047
question
c++ qt qt-creator
Qt(C++) ラベルの点滅を1文字単位でしたい


いろんなやり方があると思いますが、点滅させたい文字の色を透明色にしてみるのはどうでしょう。

[code]

    #include <QtWidgets>
      
    int main(int argc, char **argv)
    {
            QApplication app(argc, argv);
    
            QLabel label("abcd");
            label.setTextFormat(Qt::RichText);
            label.show();
    
            QTimer timer;
            QObject::connect(&timer, &QTimer::timeout, [&label]() {
                    static bool visible = true;
                    label.setText(visible ? "abcd" : "ab<span style=\"color: transparent\">c</span>d");
                    visible = !visible;
            });
            timer.start(1000);
            return app.exec();
    }
    
[/code]


CC BY-SA 4.0
2020-11-10T09:15:07.787
71842
2020-11-10T09:15:07.787
10245
71841
answer