在哪里声明常量结构数组

Where to declare const struct array

本文关键字:数组 结构 常量 声明 在哪里      更新时间:2023-10-16

对于我的应用程序,我需要多常数变数,我有一个解决方案,但在我看来这不是正确的方法。

我将展示我是如何声明这一点的,并希望对此发表一些评论或反馈。

文件: 菜单.h

#include <QDialog>
...
struct s_button {
   int buttonNum;
   QRect geometry;
   QString iconFileName;
}
namespace Ui {
class Menu;
}
class Menu : public QDialog
{
   Q_OBJECT
public:
...
}

文件:菜单.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);
     }
     ....
}

这是正确的方法还是有其他方法可以解决这个问题?

谢谢在前进

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 的数据成员。