QT开发中文网

qt 点击按钮弹出小键盘实例

下面是一个使用 Qt 实现的点击按钮弹出小键盘的示例:

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include <QGridLayout>

class KeyBoard : public QWidget {
public:
    KeyBoard(QWidget *parent = 0)
        : QWidget(parent) {

        // 创建按钮
        QPushButton *button1 = new QPushButton("1");
        QPushButton *button2 = new QPushButton("2");
        QPushButton *button3 = new QPushButton("3");
        QPushButton *button4 = new QPushButton("4");
        QPushButton *button5 = new QPushButton("5");
        QPushButton *button6 = new QPushButton("6");
        QPushButton *button7 = new QPushButton("7");
        QPushButton *button8 = new QPushButton("8");
        QPushButton *button9 = new QPushButton("9");
        QPushButton *button0 = new QPushButton("0");
        QPushButton *buttonDot = new QPushButton(".");
        QPushButton *buttonClear = new QPushButton("清空");

        // 创建文本框
        QLineEdit *lineEdit = new QLineEdit;

        // 设置布局
        QGridLayout *gridLayout = new QGridLayout;
        gridLayout->addWidget(button1, 0, 0);
        gridLayout->addWidget(button2, 0, 1);
        gridLayout->addWidget(button3, 0, 2);
        gridLayout->addWidget(button4, 1, 0);
        gridLayout->addWidget(button5, 1, 1);
        gridLayout->addWidget(button6, 1, 2);
        gridLayout->addWidget(button7, 2, 0);
        gridLayout->addWidget(button8, 2, 1);
        gridLayout->addWidget(button9, 2, 2);
        gridLayout->addWidget(button0, 3, 0);
        gridLayout->addWidget(buttonDot, 3, 1);
        gridLayout->addWidget(buttonClear, 3, 2);
        gridLayout->addWidget(lineEdit, 4, 0, 1, 3);
        setLayout(gridLayout);

        // 连接信号和槽
        connect(button1, SIGNAL(clicked()), this, SLOT(buttonClicked()));
        connect(button2, SIGNAL(clicked()), this, SLOT(buttonClicked()));
        connect(button3, SIGNAL(clicked()), this, SLOT(buttonClicked()));
        connect(button4, SIGNAL(clicked()), this, SLOT(buttonClicked()));
        connect(button5, SIGNAL(clicked()), this, SLOT(buttonClicked()));
        connect(button6, SIGNAL(clicked()), this, SLOT(buttonClicked()));
        connect(button7, SIGNAL(clicked()), this, SLOT(buttonClicked()));
        connect(button8, SIGNAL(clicked()), this, SLOT(buttonClicked()));
        connect(button9, SIGNAL(clicked()), this, SLOT(buttonClicked()));
        connect(button0, SIGNAL(clicked()), this, SLOT(buttonClicked()));
        connect(buttonDot, SIGNAL(clicked()), this, SLOT(buttonClicked()));
        connect(buttonClear, SIGNAL(clicked()), lineEdit, SLOT(clear()));
    }

public slots:
    void buttonClicked() {
        QPushButton *button = qobject_cast<QPushButton *>(sender());
        if (button) {
            QLineEdit *lineEdit = qobject_cast<QLineEdit *>(focusWidget());
            if (lineEdit) {
                lineEdit->insert(button->text());
            }
        }
    }
};

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

    // 创建主窗口
    QWidget *mainWindow = new QWidget;

    // 添加按钮到主窗口
    QPushButton *button = new QPushButton("显示小键盘");
    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(button);
    mainWindow->setLayout(layout);

    // 连接信号和槽,当按钮被点击时弹出小键盘
    KeyBoard *keyBoard = new KeyBoard;
    QObject::connect(button, &QPushButton::clicked, [&keyBoard]() {
        keyBoard->show();
    });

    // 显示主窗口
    mainWindow->show();

    return app.exec();
}

该示例中创建了一个 KeyBoard 类作为小键盘的窗口,包含了数字、小数点和清空按钮以及一个文本框。当任意一个按钮被点击时,会将相应的文本插入到当前拥有焦点的文本框中。

在主窗口中添加了一个按钮,在按钮被点击时显示小键盘。这里使用了 C++11 中的 Lambda 表达式来简化信号和槽的连接过程。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=1281

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?