2011-07-27 22 views
2

我有一些变量需要通过GUI进行更改。变量有四种类型:bool,long long,double,char *。不同的部件为不同类型的想:.NET的Qt属性表?有什么建议么?

  • QCheckBox为bool
  • QSpinBox为long long
  • QDoubleSpinBox为double
  • QLineEdit的为char*

或更改char*std::string - 不物。

所以我需要一个小部件,可以为各种类型的N个参数绘制N行。每个变量都可以在GUI中显示其名称。

我已经实现了我自己的小部件,但正在寻找此任务的'标准解决方案'。我自己的impl:http://savepic.net/1742263.png

想要类似Qt Designer的属性窗体。

+4

这可能有所帮助:http://stackoverflow.com/questions/1290838/best-qt-widget-to-use-for-properties-window – Rob

回答

1

创建您自己的QWidget子类,使您自己的“属性窗口小部件”将有一个QLabel和相应的变量类型的Widget。然后添加您的自定义“属性小部件”到您的应用程序。

例如,如果你需要添加一行的布尔类型,它的类将是这个样子:

class BoolPropertyWidget : public QWidget 
{ 
    QHBoxLayout layout; 
    QLabel label; 
public: 
    QCheckBox value; //if you would like to access the actual bool value, you can just use value.isChecked() 

    BoolPropertyWidget() { 

    //...do necessary adjustments layout, label and value here 

    layout.addWidget(&label); 
    layout.addWidget(&value); 
    setLayout(&layout); 
    } 
}; 

然后如果你需要的属性窗口小部件添加到您的应用程序,你只需必须创建BoolPropertyWidget的实例,并在您的应用程序中使用布局对象的addWidget()成员函数。

这将让你创建一个应用程序,它可以包含任何数量的必要“属性小部件”。

如果您的应用程序在添加自定义“属性窗口小部件”后没有正确调整大小,请尝试在您的应用程序上调用adjustSize()。

相关问题