QT 实现字体流动

1.重写paintEvent函数:

void MainWindow::paintEvent(QPaintEvent *event)
{
    QString strShow = "1234567890";
    QPainter p(this);

    //设置字体
    QFont font  = p.font();
    font.setPixelSize(20);

    //设置画笔
    QPen pen;
    p.setFont(font);
    pen.setColor(QColor(255,0,255));
    p.setPen(pen);

    //获取字体占用的矩阵大小
    QRect rectfont = QFontMetrics(p.font()).boundingRect(strShow);


    //流动显示逻辑
    static int indexPointX = 0;
    indexPointX = indexPointX+5;
    if(indexPointX > width()+ rectfont.width())
        indexPointX = 0;

    //显示文字
    p.drawText(width()-indexPointX,height()-20,strShow);

}

2.构造函数,定时器不断刷新

    QTimer * pTimer  = new QTimer(this);
    connect(pTimer,&QTimer::timeout,this,[&,pTimer](){
        update();
    });
    pTimer->start(100);

3.效果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Qt实现记事本设置字体,可以使用QFontDialog类。以下是实现步骤: 1. 在Qt Creator中创建一个新的Qt Widgets应用程序项目。 2. 在mainwindow.h文件中添加一个QTextEdit控件。 ```cpp #include <QTextEdit> class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); private: QTextEdit *textEdit; }; ``` 3. 在mainwindow.cpp文件中创建一个菜单项,并将其与QFontDialog类连接。 ```cpp #include <QMenuBar> #include <QMenu> #include <QAction> #include <QFontDialog> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { // Create a text edit control textEdit = new QTextEdit(this); setCentralWidget(textEdit); // Create a menu bar QMenuBar *menuBar = new QMenuBar(this); setMenuBar(menuBar); // Create a menu QMenu *menu = new QMenu("Format", this); // Create a font action QAction *fontAction = new QAction("Font", this); connect(fontAction, &QAction::triggered, [=]() { bool ok; QFont font = QFontDialog::getFont(&ok, this); if (ok) { textEdit->setFont(font); } }); menu->addAction(fontAction); // Add the menu to the menu bar menuBar->addMenu(menu); } ``` 4. 运行程序,单击“Format”菜单,然后单击“Font”菜单项,将打开QFontDialog对话框,可以选择字体。 注意:在调用QFontDialog::getFont方法时,第一个参数是一个bool类型的指针,用于指示用户是否单击了“OK”按钮。如果用户单击了“OK”按钮,将返回所选字体;否则返回默认字体

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值