在QWidget中刷新QLabel 我创建了一个应用程序,用于显示C++和Qt.中的文件夹和文件。
我添加了一个信息部分,它应该显示文件和文件夹的数量 为了实现saw,我创建了一个布局和小部件,如下所示:在QWidget中刷新QLabel 我创建了一个应用程序,用于显示C++和Qt.中的文件夹和文件。,c++,qt,C++,Qt,我添加了一个信息部分,它应该显示文件和文件夹的数量 为了实现saw,我创建了一个布局和小部件,如下所示: void MainWindow::createInfoSection() { uint64_t space; CreateInfoSection = new QWidget(); CreateInfoSection->setFixedHeight(40); //QGridLayout *CreateInfoLayout = new QGridLayou
void MainWindow::createInfoSection()
{
uint64_t space;
CreateInfoSection = new QWidget();
CreateInfoSection->setFixedHeight(40);
//QGridLayout *CreateInfoLayout = new QGridLayout(CreateInfoSection);
CreateInfoLayout = new QGridLayout(CreateInfoSection);
NbOfFolderLabel = new QLabel(tr("%1 Folders").arg(m_device.getNbOfFolder()));
NbOfFilesLabel = new QLabel(tr("%1 Files").arg(m_device.getNbOfFiles()));
space = m_device.getAvailableFreeSpaceInBytes();
if(space < MEGABYTE)
SpaceAvailLabel = new QLabel(tr("%1 KB Remaining").arg(space/KILOBYTE));
else if (space < GIGABYTE)
SpaceAvailLabel = new QLabel(tr("%1 MB Remaining").arg(space/MEGABYTE));
else
SpaceAvailLabel = new QLabel(tr("%1 GB Remaining").arg(space/GIGABYTE));
NbOfFolderLabel->updatesEnabled();
NbOfFilesLabel->updatesEnabled();
SpaceAvailLabel->updatesEnabled();
CreateInfoLayout->addWidget(NbOfFolderLabel, 0,0);
CreateInfoLayout->addWidget(NbOfFilesLabel, 0,1);
CreateInfoLayout->addWidget(SpaceAvailLabel, 0,2);
CreateInfoLayout->setAlignment(Qt::AlignCenter);
}
void MainWindow::RefreshInfoSection()
{
uint64_t space;
NbOfFolderLabel = new QLabel(tr("%1 Files").arg(m_device.getNbOfFolder()));
NbOfFilesLabel = new QLabel(tr("%1 Files").arg(m_device.getNbOfFiles()));
space = m_device.getAvailableFreeSpaceInBytes();
if(space < MEGABYTE)
SpaceAvailLabel = new QLabel(tr("%1 KB Available").arg(space/KILOBYTE));
else if (space < GIGABYTE)
SpaceAvailLabel = new QLabel(tr("%1 MB Available").arg(space/MEGABYTE));
else
SpaceAvailLabel = new QLabel(tr("%1 GB Available").arg(space/GIGABYTE));
NbOfFolderLabel->update();
NbOfFilesLabel->update();
SpaceAvailLabel->update();
CreateInfoLayout->update();
}
void主窗口::createInfoSection()
{
uint64_t空间;
CreateInfoSection=新的QWidget();
CreateInfoSection->setFixedHeight(40);
//QGridLayout*CreateInfoLayout=新的QGridLayout(CreateInfoSection);
CreateInfoLayout=新的QGridLayout(CreateInfoSection);
NbOfFolderLabel=newqlabel(tr(“%1个文件夹”).arg(m_device.getNbOfFolder());
nbofficelabel=newqlabel(tr(“%1个文件”).arg(m_device.getnbofficeles());
space=m_device.getAvailableFreeSpaceInBytes();
if(空间<兆字节)
spaceavillabel=newqlabel(tr(“%1kb剩余”).arg(空格/KB));
else if(空间<千兆字节)
SpaceAvailLabel=新的QLabel(tr(“%1 MB剩余”).arg(空间/兆字节));
其他的
SpaceAvailLabel=新的QLabel(tr(“%1 GB剩余”).arg(空格/GB));
NbOfFolderLabel->updateEnabled();
NBOfficeLabel->UpdateEnabled();
SpaceAvailLabel->UpdateEnabled();
CreateInfoLayout->addWidget(NbOfFolderLabel,0,0);
CreateInfoLayout->addWidget(NBOfficeLabel,0,1);
CreateInfoLayout->addWidget(SpaceAvailLabel,0,2);
CreateInfoLayout->setAlignment(Qt::AlignCenter);
}
当完成一个操作(例如添加文件夹)时,我将调用一个刷新方法,如下所示:
void MainWindow::createInfoSection()
{
uint64_t space;
CreateInfoSection = new QWidget();
CreateInfoSection->setFixedHeight(40);
//QGridLayout *CreateInfoLayout = new QGridLayout(CreateInfoSection);
CreateInfoLayout = new QGridLayout(CreateInfoSection);
NbOfFolderLabel = new QLabel(tr("%1 Folders").arg(m_device.getNbOfFolder()));
NbOfFilesLabel = new QLabel(tr("%1 Files").arg(m_device.getNbOfFiles()));
space = m_device.getAvailableFreeSpaceInBytes();
if(space < MEGABYTE)
SpaceAvailLabel = new QLabel(tr("%1 KB Remaining").arg(space/KILOBYTE));
else if (space < GIGABYTE)
SpaceAvailLabel = new QLabel(tr("%1 MB Remaining").arg(space/MEGABYTE));
else
SpaceAvailLabel = new QLabel(tr("%1 GB Remaining").arg(space/GIGABYTE));
NbOfFolderLabel->updatesEnabled();
NbOfFilesLabel->updatesEnabled();
SpaceAvailLabel->updatesEnabled();
CreateInfoLayout->addWidget(NbOfFolderLabel, 0,0);
CreateInfoLayout->addWidget(NbOfFilesLabel, 0,1);
CreateInfoLayout->addWidget(SpaceAvailLabel, 0,2);
CreateInfoLayout->setAlignment(Qt::AlignCenter);
}
void MainWindow::RefreshInfoSection()
{
uint64_t space;
NbOfFolderLabel = new QLabel(tr("%1 Files").arg(m_device.getNbOfFolder()));
NbOfFilesLabel = new QLabel(tr("%1 Files").arg(m_device.getNbOfFiles()));
space = m_device.getAvailableFreeSpaceInBytes();
if(space < MEGABYTE)
SpaceAvailLabel = new QLabel(tr("%1 KB Available").arg(space/KILOBYTE));
else if (space < GIGABYTE)
SpaceAvailLabel = new QLabel(tr("%1 MB Available").arg(space/MEGABYTE));
else
SpaceAvailLabel = new QLabel(tr("%1 GB Available").arg(space/GIGABYTE));
NbOfFolderLabel->update();
NbOfFilesLabel->update();
SpaceAvailLabel->update();
CreateInfoLayout->update();
}
void主窗口::RefreshInfoSection()
{
uint64_t空间;
NbOfFolderLabel=newqlabel(tr(“%1个文件”).arg(m_device.getNbOfFolder());
nbofficelabel=newqlabel(tr(“%1个文件”).arg(m_device.getnbofficeles());
space=m_device.getAvailableFreeSpaceInBytes();
if(空间<兆字节)
SpaceAvailLabel=newqlabel(tr(“%1KB可用”).arg(空格/KB));
else if(空间<千兆字节)
SpaceAvailLabel=新的QLabel(tr(“%1 MB可用”).arg(空间/兆字节));
其他的
SpaceAvailLabel=新的QLabel(tr(“%1GB可用”).arg(空格/GB));
NbOfFolderLabel->update();
nbOfficeLabel->update();
SpaceAvailLabel->update();
CreateInfoLayout->update();
}
但即使更新了3个标签,它也不会起作用
有什么想法吗?使用QLabel->update()可以,但是您还应该运行“processEvents()”来强制执行这些更新。你能运行qApp->processEvents()吗代码>或向其发出信号
看看,也许看看
我也是,我目前正在了解这一点,所以我可能会犯错误,但请让我知道进展如何
祝你好运 我认为您不应该再次使用新标签,相反,您应该能够执行类似于NbOfFolderLabel->setText(…)的操作;这意味着使他们成为您的类的成员。@seb在RefreshInfoSection()之后,您是否能够看到NbOfFolderLabel和其他标签文本??