0

Qt は OSX で Cocoa を使用しているため、たとえばユーザーが間違ったパスワードを入力した場合にモーダル QDialog を振ることは可能ですか? 私はそれについて何も見つけることができませんが、Macに実装するのは本当にいいでしょう.

ありがとう!

4

1 に答える 1

1

私はそれを行うための組み込みの方法を認識していませんが、次のように自分で振動を実装できます。

header.h

#include <QtGui>

class ShakyDialog : public QDialog
{
    Q_OBJECT

public slots:
    void shake()
    {
        static int numTimesCalled = 0;
        numTimesCalled++;

        if (numTimesCalled == 9) {
            numTimesCalled = 0;
            return;
        }

        vacillate();
        QTimer::singleShot(40, this, SLOT(shake()));
    }

private:
    void vacillate()
    {
        QPoint offset(10, 0);

        move(((shakeSwitch) ? pos() + offset : pos() - offset));
        shakeSwitch = !shakeSwitch;
    }

    bool shakeSwitch;
};

main.cpp

#include "header.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    ShakyDialog dialog;
    QHBoxLayout layout(&dialog);
    QPushButton button("Push me.");
    layout.addWidget(&button);

    QObject::connect(&button, SIGNAL(clicked()), &dialog, SLOT(shake()));

    dialog.show();
    return app.exec();
}
于 2012-05-21T05:27:44.670 に答える