Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在QWidget中刷新QLabel 我创建了一个应用程序,用于显示C++和Qt.中的文件夹和文件。_C++_Qt - Fatal编程技术网

在QWidget中刷新QLabel 我创建了一个应用程序,用于显示C++和Qt.中的文件夹和文件。

在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

我添加了一个信息部分,它应该显示文件和文件夹的数量

为了实现saw,我创建了一个布局和小部件,如下所示:

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和其他标签文本??