如何在 Qt 中创建静态 QLabel
how to create static QLabel in Qt
是否可以在一个 class 中创建一些 static
QLabel
s,而其他 classes 可以访问它的 QLabel
s 变量并应用在不创建对象的情况下更改 QLabel
s?
我在网上找到了一些答案,比如如果你想访问一个 class 变量而不在另一个 class 中创建它的对象,你必须使其数据 static
.
所以基本上我在这里尝试做的是访问和更改一个 class 变量,对我来说它是 QLabel
s,在另一个 class 中而不创建它的对象。
我知道如何创建 static
变量,但是当要声明一个 staic QLabel
时,我发现很难实现。
我认为您可以将标签设为 可访问 ,即将其公开为 public 成员。假设您在 ui
中有一个 Form
class 和一个 label
QLabel
。将此方法添加到 class:
public:
QLabel * label();
实施只是:
QLabel *Form::label()
{
return ui->label;
}
如果您只需要暴露标签文本属性,只需添加这两个访问器方法:
public:
QString labelText();
void setLabelText(QString & text);
在实现文件中:
QString Form::labelText()
{
return ui->label->text();
}
void Form::setLabelText(QString &text)
{
ui->label->setText(text);
}
最后这些策略更适合封装。
关于静态化:如果您有多个 Form
class 实例怎么办?静态成员应该指向哪个标签?如果您 100% 确定您将只有一个小部件实例,则可以添加一个静态 public QLabel *
成员:
public:
static QLabel * label;
在实现文件中,在顶部:
QLabel *Form::label = 0;
在Form
构造函数中:
ui->setupUi(this);
if(label == 0)
{
label = ui->label;
}
同样,如果您只有一个 Form
实例,这就有意义了。否则,静态指针将永远指向首先创建的小部件的标签(而且,危险的是,当该实例被销毁时,指向任何东西)。
是否可以在一个 class 中创建一些 static
QLabel
s,而其他 classes 可以访问它的 QLabel
s 变量并应用在不创建对象的情况下更改 QLabel
s?
我在网上找到了一些答案,比如如果你想访问一个 class 变量而不在另一个 class 中创建它的对象,你必须使其数据 static
.
所以基本上我在这里尝试做的是访问和更改一个 class 变量,对我来说它是 QLabel
s,在另一个 class 中而不创建它的对象。
我知道如何创建 static
变量,但是当要声明一个 staic QLabel
时,我发现很难实现。
我认为您可以将标签设为 可访问 ,即将其公开为 public 成员。假设您在 ui
中有一个 Form
class 和一个 label
QLabel
。将此方法添加到 class:
public:
QLabel * label();
实施只是:
QLabel *Form::label()
{
return ui->label;
}
如果您只需要暴露标签文本属性,只需添加这两个访问器方法:
public:
QString labelText();
void setLabelText(QString & text);
在实现文件中:
QString Form::labelText()
{
return ui->label->text();
}
void Form::setLabelText(QString &text)
{
ui->label->setText(text);
}
最后这些策略更适合封装。
关于静态化:如果您有多个 Form
class 实例怎么办?静态成员应该指向哪个标签?如果您 100% 确定您将只有一个小部件实例,则可以添加一个静态 public QLabel *
成员:
public:
static QLabel * label;
在实现文件中,在顶部:
QLabel *Form::label = 0;
在Form
构造函数中:
ui->setupUi(this);
if(label == 0)
{
label = ui->label;
}
同样,如果您只有一个 Form
实例,这就有意义了。否则,静态指针将永远指向首先创建的小部件的标签(而且,危险的是,当该实例被销毁时,指向任何东西)。