1

そこで、単純に「ランダム」な文章を作るプログラムを作りました。ctime を使用するシードに基づいて、7 つのリストから名詞と色形容詞を選択します。今、私はそれをコンソールアプリに変換しようとしています。私の問題は、正しく表示できないことです。カウトする代わりに、すべてを 1 つのレーベルに収める必要があります。

エラー: 'QLabel::setText(std::string&)' の呼び出しに一致する関数がありません

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <cstdlib>
#include <iostream>
#include <ctime>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_newSentence_clicked()
{
    std::string noun[7] = {"cow", "tree", "marker", "cereal", "calendar", "rug", "hammer"};
    std::string color[7] = {"red", "orange", "yellow", "green", "blue", "indigo", "violet"};

    srand(time(0));
    int nounRandomizer = (rand()%5);
    int colorRandomizer = ((rand()+1)%5);

    std::string sentence = "The"+noun[nounRandomizer]+" is "+color[colorRandomizer]+".";

    ui->sentenceDisplay->setText(sentence);
}
4

1 に答える 1

3

QLabel参照から、setText 関数はconst QString&入力パラメーターとして受け取りますが、std::string を渡しました。std::string から QString オブジェクトを構築し、それに渡すことができます。

例えば:

ui->sentenceDisplay->setText(QString::fromStdString(sentence));
于 2013-01-10T01:41:48.060 に答える