Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Japanese
  4. ボタンのクリックイベントについて
Qt 6.12 LTS is out! See what's new in the release blog

ボタンのクリックイベントについて

Scheduled Pinned Locked Moved Unsolved Japanese
3 Posts 2 Posters 4.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • V Offline
    V Offline
    viora
    wrote on last edited by
    #1

    ボタンのクリックイベントハンドラが、1クリックで2回呼ばれたり、アプリ起動後クリックしていないボタンのイベントハンドラが呼ばれる現象についてご存じの方いらっしゃいませんか?
     1クリックで2度呼ばれる方は、今回の時間と前回呼ばれた時間の差がn秒以下なら抜ける対策をとっていますが、
     クリックもしていないイベントの対策が思いつきません。2度目の際のコールスタックは以下の通り
    stopbutton03.png
    stopbutton04.png

    クリックしてないのに呼ばれる方は、起動後2度来るみたい(1度目は起動直後、2度目はPLAYした後のため止まってしまう)…最初の2度を無視すればいいのか?試したところ、うまくいってるようです。不具合?報告とさせてください。

    V 1 Reply Last reply
    0
    • V viora

      ボタンのクリックイベントハンドラが、1クリックで2回呼ばれたり、アプリ起動後クリックしていないボタンのイベントハンドラが呼ばれる現象についてご存じの方いらっしゃいませんか?
       1クリックで2度呼ばれる方は、今回の時間と前回呼ばれた時間の差がn秒以下なら抜ける対策をとっていますが、
       クリックもしていないイベントの対策が思いつきません。2度目の際のコールスタックは以下の通り
      stopbutton03.png
      stopbutton04.png

      クリックしてないのに呼ばれる方は、起動後2度来るみたい(1度目は起動直後、2度目はPLAYした後のため止まってしまう)…最初の2度を無視すればいいのか?試したところ、うまくいってるようです。不具合?報告とさせてください。

      V Offline
      V Offline
      viora
      wrote on last edited by
      #2

      @viora

      プロジェクトをgithubにあげました。

      https://github.com/miyabin1701/qtmecabon/tree/master

      使い方などご案内

      https://qtmecabon.techblog.jp/archives/4254570.html

      PLAYボタンはPOUSEボタンを兼ねているので、1クリックで2度来ると
      PLAY押したはずなのにPOUSEになっている。とか使いにくかったです。
      ダイヤルはお気に入りでしたけど

      1 Reply Last reply
      0
      • A Offline
        A Offline
        arceajin
        wrote on last edited by
        #3

        1クリックで2度呼ばれる

        on_StopButton_clicked slotは2回以上connectされているからと思います。

        例えば、
        https://github.com/miyabin1701/qtmecabon/blob/master/qtMeCabon/mainwindow.cpp#L457
        https://github.com/miyabin1701/qtmecabon/blob/master/qtMeCabon/mainwindow.cpp#L706

        どこからsignalを発信するのはQObject::sender()を出力すればわかります。

        https://doc.qt.io/qt-6/qobject.html#sender

        使用例:

        class Test : public QObject
        {
            Q_OBJECT
        public:
            Test() : QObject()
            {
                QObject::connect(this, &Test::testSignal, this, &Test::testSlot);
        
                emit testSignal();
            }
        
        signals:
            void testSignal();
        
        private slots:
            void testSlot() {
                qDebug()<<sender()<<this;
            }
        };
        
        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt
        • Unsolved