FLTK输出显示最新输入

时间:2016-11-17 21:57:51

标签: c++ fltk

main.cpp

void torsoOPCB(Fl_Widget *w, void* p) {
    for(std::size_t i=0; i < torso.size(); i++) {
        cout << "Name: " << torso[i].GetName() << endl;
        cout << "Part Number: " << torso[i].GetPartNumber() << endl << endl;
    } // This loop is to check if the inputs are in the vector torso


    dialog = new Fl_Window(340, 300, "Robot Part");

    Fl_Multiline_Output* output = new Fl_Multiline_Output(100, 10, 400, 200, "Torso list:");


    for(std::size_t i = 0; i < torso.size(); i++) {
        output->value(torso[i].print().c_str());
    }

    dialog->end();
    dialog->set_non_modal();
    dialog->show();
}

我正在学习如何在C ++中使用FLTK,我不知道为什么它会一直向我显示最新用户的输入。例如,如果我输入了躯干[0]和躯干[1]的输入,则输出将仅显示最新输入的躯干[1]。我认为输入正确存储,但我不确定它为什么不显示躯干[0]和躯干[1]。

这是我的打印功能

Torso.cpp

std::string Torso::print()
{
    ostringstream of;

    of << "Part name: " << GetName() 
    << endl << "Part #: " << GetPartNumber() 
    << endl << "Weight: " << GetWeight() 
    << endl << "Cost: " << GetCost()
    << endl << "Battery Comp: " << GetDescription()
    << endl << "Description: " << GetBatteryCompartmentSize() << endl;

    return of.str();
}

我正在使用FLTK 1.3.4版。先谢谢你了

1 个答案:

答案 0 :(得分:0)

您只显示

中的最后一项
for(std::size_t i = 0; i < torso.size(); i++) {
    output->value(torso[i].print().c_str());
}

始终覆盖输出值。如果您希望显示所有输出,请先将其收集起来,然后再将其放入窗口小部件

std::ostringstream oss;
for(std::size_t i = 0; i < torso.size(); i++) {
    oss << torso[i].print() << "\n";
}
output->value(oss.str().c_str());

如果您不介意在同一行上输出多个输出,请将&#34; \ n更改为&#34;。 &#34;