首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QPlainTextEdit - setViewportMargins,受保护

QPlainTextEdit - setViewportMargins,受保护
EN

Stack Overflow用户
提问于 2017-01-12 14:32:14
回答 2查看 523关注 0票数 0

我有一个简单的应用程序,文本编辑- QPlainTextEdit,由qt设计师创建。我只需要从mainwindow.cpp setViewportMargins.But获得以下错误消息- void::setViewportMargins( int,int)‘是受保护的。

代码:

代码语言:javascript
复制
ui->textEdit->setViewportMargins(10,10,10,10);

有办法这样做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-12 14:45:32

受保护的函数只能在类中使用,因此它会生成错误。我通过设计CustomPlainText类并将其提升到原来的QPlainTextEdit来解决这个问题,在其中我使用了setViewportMargins (10,10,10,10);。如果您想从类外部访问该函数,我已经创建了函数CustomSetViewportMargins({args})

右击并选择:升级到..

写出类的名称和标题并添加它。

然后按下宣传。

customplaintext.cpp

代码语言:javascript
复制
#ifndef CUSTOMPLAINTEXT_H
#define CUSTOMPLAINTEXT_H

#include <QPlainTextEdit>

class CustomPlainText:public QPlainTextEdit
{
    Q_OBJECT
public:
    CustomPlainText(QWidget * parent = 0);
    void CustomSetViewportMargins(int left, int top, int right, int bottom);
    void CustomSetViewportMargins(const QMargins & margins);
};

#endif // CUSTOMPLAINTEXT_H

customplaintext.h

代码语言:javascript
复制
#include "customplaintext.h"

CustomPlainText::CustomPlainText(QWidget *parent): QPlainTextEdit(parent)
{
    setViewportMargins(10,10,10,10);
}

void CustomPlainText::CustomSetViewportMargins(int left, int top, int right, int bottom)
{
    setViewportMargins(left, top, right, bottom);
}

void CustomPlainText::CustomSetViewportMargins(const QMargins & margins)
{
    setViewportMargins(margins);
}

在此之前:

之后:

完整代码: https://github.com/eyllanesc/stackoverflow/tree/master/CustomPlainTextProject

票数 1
EN

Stack Overflow用户

发布于 2017-01-12 14:43:32

为了使用QPlainTextEdit的受保护方法,需要对其进行子类,如下所示:

代码语言:javascript
复制
class MyPlainTextEdit: public QPlainTextEdit
{
    Q_OBJECT
public:
    MyPlainTextEdit(QWidget* parent=0):QPlainTextEdit(parent){}
    //ADD A PUBLIC METHOD
    void publicSetViewportMargins(int left, int top, int right, int bottom)
    {
        setViewportMargins(left ,top, right, bottom);
    }
    //OR
protected:
    void setViewportMargins(int left, int top, int right, int bottom)
    {
        //REIMPLEMENT METHOD HERE
    }
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41615743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档