笔记 qsrand用法 调用外部exe的方法 设置pushButton按钮背景色和字体颜色 Qt 、c++两个.cpp文件相互调用各自的函数 Qt 实现消息提示控件TipsWidget

在Qt中,qsrand() 函数用于设置随机数生成的种子,从而影响随机数的产生。随机数生成的种子决定了随机数序列的起始点,相同的种子将会产生相同的随机数序列。

qsrand() 函数的原型如下:

void qsrand(uint seed)

它接受一个参数 seed,该参数用于设置随机数的种子。通常情况下,可以使用当前时间作为种子,以确保每次运行时都会得到不同的随机数序列。

以下是一个简单的示例,演示了 qsrand() 函数的用法:

#include <QCoreApplication>
#include <QDebug>
#include <QTime>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 设置随机数种子为当前时间
    qsrand(QTime::currentTime().msec());

    // 生成并输出 5 个随机数
    for (int i = 0; i < 5; ++i) {
        int randomValue = qrand(); // 生成随机数
        qDebug() << "Random number:" << randomValue;
    }

    return a.exec();
}

在这个示例中,我们首先使用 QTime::currentTime().msec() 获取当前时间的毫秒数,并将其作为种子传递给 qsrand() 函数。然后我们使用 qrand() 函数生成随机数,并将其输出。由于种子随时间变化,因此每次运行程序时都会得到不同的随机数序列。

需要注意的是,qrand() 函数生成的是一个32位的随机整数,范围是从 0 到 RAND_MAX(通常是 32767),如果需要生成特定范围内的随机数,可以使用取模运算来缩放到指定范围内。

在Qt中调用外部exe的方法有几种,其中包括使用QProcess类和QDesktopServices::openUrl()函数。下面我会逐一介绍这两种方法的用法。

使用 QProcess 类

QProcess类提供了一个用于启动外部进程的接口,你可以使用它来执行外部exe文件,并与其进行交互。

#include <QCoreApplication>
#include <QProcess>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 创建 QProcess 实例
    QProcess *process = new QProcess(&a);

    // 设置外部程序的路径和参数
    QString program = "path/to/your/external/exe";
    QStringList arguments; // 可选的参数
    arguments << "arg1" << "arg2"; // 设置参数
    process->start(program, arguments);

    return a.exec();
}

调用外部exe的方法 使用 QDesktopServices::openUrl() 函数

QDesktopServices::openUrl()函数用于打开外部资源,包括文件、目录和URL等。如果你的exe文件是可以通过关联的程序直接打开的,你也可以使用这个函数来执行它。

#include <QCoreApplication>
#include <QDesktopServices>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 调用外部exe文件
    QString program = "path/to/your/external/exe";
    QDesktopServices::openUrl(QUrl::fromLocalFile(program));

    return a.exec();
}

在使用这两种方法时,需要确保指定的外部exe文件路径是正确的,并且已经安装在系统中。如果需要传递参数给外部exe,可以使用QProcesssetArguments()函数或者直接在QDesktopServices::openUrl()函数中传递URL参数。

设置pushButton按钮背景色和字体颜色

要设置QPushButton按钮的背景色和字体颜色,你可以使用Qt的样式表(StyleSheet)。以下是一个示例,演示如何在Qt中设置QPushButton的背景色和字体颜色:

#include <QApplication>
#include <QPushButton>

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

    QPushButton button("Click me!");
    
    // 设置背景色和字体颜色
    button.setStyleSheet("background-color: yellow; color: red;");

    button.show();

    return a.exec();
}

在这个示例中,我们创建了一个QPushButton按钮,并使用setStyleSheet()函数来设置按钮的样式。在样式表中,我们通过background-color属性设置按钮的背景色为黄色,通过color属性设置按钮的字体颜色为红色。

你也可以将样式表设置为外部文件,并使用QFile或QResource来加载它。这种方法可以让你更轻松地管理和修改样式。

使用样式表可以非常灵活地定制Qt控件的外观和样式,你可以根据自己的需求来设置各种属性,如背景色、字体颜色、边框样式等。

互相调用

要在Qt项目中的两个.cpp文件中相互调用各自的函数,可以使用C++的常规方法来实现。这通常涉及将函数声明放在头文件中,并在需要使用这些函数的.cpp文件中包含相应的头文件。

下面是一个示例:

假设你有两个.cpp文件:file1.cpp 和 file2.cpp,并且它们位于同一个Qt项目中。

file1.cpp

#include "file1.h"

void FunctionInFile1()
{
    qDebug() << "Function in file1.cpp";
}

file1.h

#ifndef FILE1_H
#define FILE1_H

#include <QDebug>

void FunctionInFile1();

#endif // FILE1_H

file2.cpp

#include "file2.h"
#include "file1.h" // 包含file1的头文件,以便调用file1的函数

void FunctionInFile2()
{
    qDebug() << "Function in file2.cpp";
    
    // 调用file1.cpp中的函数
    FunctionInFile1();
}

file2.h

#ifndef FILE2_H
#define FILE2_H

#include <QDebug>

void FunctionInFile2();

#endif // FILE2_H

在这个示例中,file2.cpp 包含了 file1.cpp 的头文件 “file1.h”,以便可以调用 file1.cpp 中的函数。同样地,file1.cpp 中的函数也可以调用 file2.cpp 中的函数,只需要包含相应的头文件即可。

然后你可以在你的 Qt 项目中使用这些函数:

#include <QCoreApplication>
#include "file1.h"
#include "file2.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    FunctionInFile1(); // 调用file1.cpp中的函数
    FunctionInFile2(); // 调用file2.cpp中的函数

    return a.exec();
}

这样,你就可以在 Qt 项目中的不同.cpp文件中相互调用各自的函数了。

提示控件

要实现一个消息提示控件(TipsWidget)可以使用Qt的QWidget或QFrame来创建一个自定义的窗口部件。以下是一个简单的示例代码,演示如何创建一个消息提示控件:

#ifndef TIPSWIDGET_H
#define TIPSWIDGET_H

#include <QWidget>
#include <QLabel>
#include <QTimer>

class TipsWidget : public QWidget
{
    Q_OBJECT
public:
    explicit TipsWidget(QWidget *parent = nullptr);

public slots:
    void showMessage(const QString &message, int timeout = 3000);

private slots:
    void hideMessage();

private:
    QLabel *label;
    QTimer *timer;
};

#endif // TIPSWIDGET_H
#include "tipswidget.h"
#include <QHBoxLayout>

TipsWidget::TipsWidget(QWidget *parent) : QWidget(parent)
{
    label = new QLabel(this);
    label->setAlignment(Qt::AlignCenter);
    label->setStyleSheet("QLabel { background-color: yellow; color: black; border: 1px solid black; border-radius: 3px; padding: 5px; }");

    QHBoxLayout *layout = new QHBoxLayout(this);
    layout->addWidget(label);
    layout->setContentsMargins(0, 0, 0, 0);
    setLayout(layout);

    timer = new QTimer(this);
    connect(timer, &QTimer::timeout, this, &TipsWidget::hideMessage);
}

void TipsWidget::showMessage(const QString &message, int timeout)
{
    label->setText(message);
    timer->start(timeout);
    show();
}

void TipsWidget::hideMessage()
{
    hide();
    timer->stop();
}

在这个示例中,TipsWidget类继承自QWidget,它包含一个QLabel用于显示消息,并且使用了一个QTimer来控制消息的显示时间。showMessage()槽函数用于显示消息,并在一定时间后隐藏消息。hideMessage()槽函数用于隐藏消息。

要使用这个消息提示控件,你可以在你的Qt应用中包含这些文件,然后创建一个TipsWidget的实例并调用showMessage()函数来显示消息。

#include <QApplication>
#include "tipswidget.h"

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

    TipsWidget tipsWidget;
    tipsWidget.showMessage("Hello, World!", 3000); // 显示消息3秒钟

    return a.exec();
}

这个示例只是一个基本的消息提示控件,你可以根据自己的需求进一步扩展和定制,例如添加动画效果、自定义样式等。

qt 笔记 程序启动画面 账号密码登录界面 打开外部exe,并将其嵌入到qt界面中

程序启动画面QSplashScreen

QSplashScreen是Qt提供的一个类,用于显示程序启动画面。你可以在启动应用程序时显示QSplashScreen,然后在应用程序准备就绪后关闭它。以下是一个简单的示例,演示如何在程序启动时显示QSplashScreen:

#include <QApplication>
#include <QSplashScreen>
#include <QTimer>

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

    // 创建QSplashScreen实例,并设置启动画面的图片
    QSplashScreen splash(QPixmap(":/splash/image/splash.png"));
    splash.show();

    // 模拟应用程序启动过程
    // 假设我们在这里进行一些初始化操作,比如加载配置文件、初始化数据库等
    // 这里使用QTimer模拟一个延迟,你可以根据实际情况调整延迟时间
    QTimer::singleShot(3000, &splash, &QWidget::close);

    // 显示主窗口
    // 在真实应用程序中,这里应该创建并显示你的主窗口
    // MainWindow mainWindow;
    // mainWindow.show();

    return a.exec();
}

在这个示例中,我们首先创建了一个QSplashScreen实例,并通过setPixmap()函数设置了启动画面的图片。然后调用show()函数显示启动画面。在应用程序启动时,启动画面会显示,然后使用QTimer::singleShot()模拟了一些初始化操作,并在3秒后关闭了启动画面。

请注意,要让这段代码正常运行,你需要在项目资源文件(.qrc文件)中添加启动画面的图片,并将其命名为"splash.png"。

在QT中实现账号密码登录界面

创建一个简单的账号密码登录界面可以使用Qt的QWidget、QLineEdit、QPushButton等控件。以下是一个基本的示例:

#include <QApplication>
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>
#include <QMessageBox>

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

    // 创建主窗口
    QWidget window;
    window.setWindowTitle("Login");

    // 创建布局管理器
    QVBoxLayout layout(&window);

    // 创建用户名和密码输入框
    QLineEdit usernameEdit;
    QLineEdit passwordEdit;
    usernameEdit.setPlaceholderText("Username");
    passwordEdit.setPlaceholderText("Password");
    passwordEdit.setEchoMode(QLineEdit::Password); // 隐藏密码输入内容

    // 创建登录按钮
    QPushButton loginButton("Login");

    // 添加控件到布局中
    layout.addWidget(&usernameEdit);
    layout.addWidget(&passwordEdit);
    layout.addWidget(&loginButton);

    // 连接登录按钮的点击信号到槽函数
    QObject::connect(&loginButton, &QPushButton::clicked, [&]() {
        QString username = usernameEdit.text();
        QString password = passwordEdit.text();

        // 简单的验证用户名和密码
        if (username == "admin" && password == "123456") {
            QMessageBox::information(&window, "Login", "Login successful!");
        } else {
            QMessageBox::warning(&window, "Login", "Invalid username or password!");
        }
    });

    // 显示窗口
    window.show();

    return a.exec();
}

在这个示例中,我们创建了一个QWidget窗口,并使用QVBoxLayout布局管理器来布局窗口中的控件。我们创建了两个QLineEdit控件分别用于输入用户名和密码,并创建了一个QPushButton按钮用于登录。我们使用lambda表达式将登录按钮的点击信号连接到一个槽函数,槽函数会检查用户名和密码是否正确,并显示相应的消息框。

这只是一个简单的示例,你可以根据实际需求对界面进行定制和扩展,比如添加记住密码、忘记密码、注册等功能。

Qt打开外部exe,并将其嵌入到qt界面中

如果你想要在Qt界面中嵌入外部exe,并将其显示在Qt的窗口中,一种常见的方法是使用QProcess类启动外部exe,并将其输出(例如标准输出)读取到一个Qt控件中,比如QTextEdit或者QPlainTextEdit

以下是一个简单的示例,演示如何在Qt界面中嵌入外部exe的输出:

#include <QCoreApplication>
#include <QProcess>
#include <QTextEdit>
#include <QVBoxLayout>
#include <QWidget>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 创建 QWidget 实例作为主窗口
    QWidget window;
    QVBoxLayout layout(&window);

    // 创建 QTextEdit 实例用于显示外部exe的输出
    QTextEdit textEdit;
    layout.addWidget(&textEdit);

    // 创建 QProcess 实例用于启动外部exe
    QProcess process;
    process.start("path/to/your/external/exe");

    // 读取外部exe的输出并显示在 QTextEdit 中
    QObject::connect(&process, &QProcess::readyReadStandardOutput, [&]() {
        QByteArray output = process.readAllStandardOutput();
        textEdit.append(QString::fromUtf8(output));
    });

    // 显示窗口
    window.show();

    return a.exec();
}

在这个示例中,我们首先创建了一个QWidget窗口,然后在窗口中添加了一个QTextEdit控件,用于显示外部exe的输出。然后我们使用QProcess类启动外部exe,并通过连接QProcess的readyReadStandardOutput信号来实时读取外部exe的标准输出,并将其追加到QTextEdit中。最后我们显示了窗口。

请确保将 "path/to/your/external/exe" 替换为你的外部exe文件的路径。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值