来自类mainWindows“校长”。我可以完美地运行这段代码:
ui->label1->setText("texto");从另一个外部函数中,我需要运行相同的代码。
发布于 2015-09-14 09:18:19
如果它的外部函数被放在其他类中。您可以指定指向ui的链接。
Ui::MainWindowUI *MainUi=0;
...
void Configurations::setMainUI(Ui::MainWindowUI* u){
if (u){
MainUi=u;
}
}mainWindows:
instanceConfigurations.setMainUI(ui);然后可以通过以下方式访问ui:
void Configurations::setLabel(){
MainUi->label1->setText("texto");
}发布于 2015-09-14 09:48:02
(尽管您没有指定,但看起来您使用的是C++,所以我假设这是正确的。)
ui变量很可能是主窗口类的私有成员,因此可以使用各种标准方法从该类外部访问它。如果您不担心破坏封装,那么最简单的方法之一就是向类中添加一个返回ui成员的方法。我记不起涉及的确切类型,所以这将是稍微不完整的,但它应该看起来像这样(其中MainWindow是您的类):
MainWindow::UI* MainWindow::getUi()
{
return ui;
}其中<main window class>是您的类的实际名称。
在此之后,任何具有指向您的主窗口实例的指针的代码(我在这里将其称为mainWindow )都可以执行如下操作:
mainWindow->getUi()->label1->setText("texto");发布于 2015-09-14 10:09:33
MainWindow需要在其API中公开文本。您永远不应该直接公开像ui实例这样的实现细节:类MainWindow ... { Q_OBJECT Q_PROPERTY (QString someText READ someText WRITE setSomeText) ...public: QString someText() const { return ui.label1->text();} void setSomeText(const QString & text) { ui.label1->setText(text);} ... };
空函数(MainWindow* w) { w->setSomeText("Hello");} int main(int argc,char ** argv) { ...MainWindow窗口;window.show();...函数(窗口);... }
https://stackoverflow.com/questions/32555846
复制相似问题