在哪里声明const struct数组

时间:2016-07-13 06:46:54

标签: c++

对于我的应用我需要多个常量变量,我有一个解决方案,但我认为这不是正确的方法。

我将展示我是如何宣布这一点的,并希望得到一些评论或反馈。

file:menu.h

#include <QDialog>
...
struct s_button {
   int buttonNum;
   QRect geometry;
   QString iconFileName;
}

namespace Ui {
class Menu;
}
class Menu : public QDialog
{
   Q_OBJECT
public:
...
}

file:menu.cpp

#include "menu.h"
#include "ui_menu.h"
...
const s_button menuButtons[] =
{
   { 0, QRect(104,120,160,160), "VolumeUp.png"   },
   { 1, QRect(104,300,160,160), "VolumeDown.png" },
   { 2, QRect(104,480,160,160), "Mute.png"       }
};
... 
//Constructor
Menu::Menu(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::MenuDialog)
{
    ui->setupUi(this);
    ....
}

void Menu::drawMenuButton()
{
     uint s = sizeof(menuButtons) / sizeof(menuButtons[0]);

     for(uint i=0; i<s; i++) {
      drawImage(menuButtons[i].iconFileName, menuButtons[i].geometry);
     }
     ....
}

这是正确的方式还是有另一种方法来处理这个问题?

感谢adavanced

1 个答案:

答案 0 :(得分:0)

const s_button menuButtons[] = {
    { 0, QRect(104,120,160,160), "VolumeUp.png"   },
    { 1, QRect(104,300,160,160), "VolumeDown.png" },
    { 2, QRect(104,480,160,160), "Mute.png"       }
};

您可以这样做,它被称为聚合成员初始化{ 0, QRect(104,120,160,160), "VolumeUp.png" }会按会员顺序初始化s_button个数据成员。

相关问题