QT的全局变量问题。

我声明了全局变量,并且已经把头文件引入,目的是捕获用户输入的信息展现在QTextEdit中,关键代码已画出,求解为什么报错

img

img

img

看起来应该是静态变量没有初始化
解决你的问题,请点赞采纳,谢谢!

全局变量文件还得有个cpp文件定义的

【相关推荐】



  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/1078357
  • 这篇博客你也可以参考下:发现Qt TextEdit空格无法换行,解决后记录一下。
  • 除此之外, 这篇博客: Qt之输入控件(QTextEdit)中的 常用功能介绍 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 加载文件
        QString fileName = QFileDialog::getOpenFileName(this);
    	QFile file(fileName);
        if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
            return "read failed !!";
        QTextStream textStream(&file);
        textStream.setCodec(codec);
        QString text = textStream.readAll();
        textEdit->setPlainText(text);//加载html用setHtml
    

    QFile类的功能是读取文件,默认情况下,它不会对文件进行任何处理,只负责将文件以二进制的方式读出并存放到一个字节数组中。QTextStream类用来将存储介质中的8位字节数据转换为16位的Unicode字符串。默认情况下,QTextStream假定我们使用系统本地8位编码。可以通过QTextStream::setCodec()来改变解析数据时所采用的编码格式(类unix系统一般采用utf-8编码)。

    • 保存文件
        QFileDialog dialog(this);
        dialog.setWindowModality(Qt::WindowModal);
        dialog.setAcceptMode(QFileDialog::AcceptSave);
        if (dialog.exec() != QDialog::Accepted)
            return false;
        return saveFile(dialog.selectedFiles().first());
    
    • 常见文本属性设置

    效果

    源码

        QPushButton  *italicBtn = new QPushButton("斜体");
        italicBtn->setCheckable(true);
        italicBtn->setChecked(false);
        italicBtn->setStyleSheet("QPushButton {background:transparent;}"
                                 "QPushButton:checked {background-color:white}");
    
        QPushButton *boldBtn = new QPushButton("加粗");
        boldBtn->setCheckable(true);
        boldBtn->setChecked(false);
        boldBtn->setStyleSheet("QPushButton {background:transparent;}"
                               "QPushButton:checked {background-color:white}");
    
        QPushButton *underlineBtn = new QPushButton("下划线");
        underlineBtn->setCheckable(true);
        underlineBtn->setChecked(false);
        underlineBtn->setStyleSheet("QPushButton {background:transparent;}"
                                    "QPushButton:checked {background-color:white}");
    
        QString textString = textFromFile(":/test1.txt", "gbk");
        QTextEdit *textEdit = new QTextEdit;
        textEdit->setPlainText(textString);
    
    
        QFontComboBox *fontComboBox = new QFontComboBox;
    
    
        QGridLayout *gridLayout = new QGridLayout;
        gridLayout->addWidget(fontComboBox, 0, 0, 1, 1);
        gridLayout->addWidget(italicBtn, 0, 1, 1, 1);
        gridLayout->addWidget(boldBtn, 0, 2, 1, 1);
        gridLayout->addWidget(underlineBtn, 0, 3, 1, 1);
        gridLayout->addWidget(textEdit, 1, 0, 1, 4);
    
        connect(fontComboBox, &QFontComboBox::currentFontChanged, [=](QFont font) {
            textEdit->setFontFamily(font.family());
            textEdit->setPlainText(textString);
        });
    
        connect(italicBtn, &QPushButton::toggled, [=](bool checked) {
            if (checked) {
                textEdit->setFontItalic(true);
                textEdit->setPlainText(textString);
            } else {
                textEdit->setFontItalic(false);
                textEdit->setPlainText(textString);
            }
        });
    
        connect(boldBtn, &QPushButton::toggled, [=](bool checked){
            if (checked) {
                textEdit->setFontWeight(QFont::Bold);
                textEdit->setPlainText(textString);
            } else {
                textEdit->setFontWeight(QFont::Normal);
                textEdit->setPlainText(textString);
            }
        });
    
        connect(underlineBtn, &QPushButton::toggled, [=](bool checked){
            if (checked) {
                textEdit->setFontUnderline(true);
                textEdit->setPlainText(textString);
            } else {
                textEdit->setFontUnderline(false);
                textEdit->setPlainText(textString);
            }
        });
    
        this->setLayout(gridLayout);
        this->resize(500, 500);
    

    警告:所有属性必须在setText之前进行设置。当属性发生变化后必须再次调用setText来对显示文本进行刷新。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

静态变量初始化需要在 cpp中 QString Globals::myvar… = "";