将程序输出重定向到QLabel而不是控制台

时间:2016-09-16 21:21:02

标签: c++ qt

如何让我的数据显示在下面创建的窗口中。这是一个控制台应用程序,一切正常。我只是希望输出在创建的窗口而不是控制台。

#include <QApplication>
#include <QLabel>
#include <QString>
#include "Prob3TableInherited.h"

int main(int argc, char *argv[]) {
    cout << "Entering problem number 3" << endl;
    int rows = 5;
    int cols = 6;

    Prob3TableInherited tab("Problem3.txt", rows, cols);
    const int *naugT = tab.getTable();

    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < cols; j++)
        {
            cout << naugT[i*cols + j] << " ";
        }
        cout << endl;
    }
    cout << endl;

    const int *augT = tab.getAugTable();
    for (int i = 0; i <= rows; i++)
    {
        for (int j = 0; j <= cols; j++)
        {
            cout << augT[i*(cols + 1) + j] << " ";
        }
        cout << endl;
    }

    // How can I pass the data?
    QString data("Need To Pass Data Here");

    //Create the Window Application
    QApplication a(argc, argv);
    QLabel *label=new QLabel(data);

    //Make it visible
    label->show();

    return a.exec();
}

3 个答案:

答案 0 :(得分:0)

您必须将标签附加到QApplication。 看看这个答案:

Adding a label to a widget

答案 1 :(得分:0)

  

我只想让输出在创建的窗口而不是控制台

你可以使用QStringList并将输出附加到它而不是cout。例如,您的第一个循环看起来像

...
QStringList outputList;
for (int i = 0; i < rows; i++)
{
    for (int j = 0; j < cols; j++)
    {
        outputList << naugT[i*cols + j] << " ";
    }
    outputList << "\n";
}
outputList << "\n";
...

然后您可以将列表添加到您的标签中,如下所示

QLabel * label = new QLabel(outputList.join(""));

相同
QString data = outputList.join("");
QLabel * label = new QLabel(data);

答案 2 :(得分:0)

创建一个小部件QWidget *w = new QWidget()并将标签贴在他身上

 QLabel *label = new QLabel(w);
 QHBoxLayout *layout = new QHBoxLayout();
 label->setText("your data");
 layout->addWidget(label);
 setLayout(layout);

显示小部件w->show()