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版。先谢谢你了
答案 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;