2016-07-13 96 views
0

对于我的应用程序,我需要多个常量变量,我有一个解决方案,但在我看来,我认为这不是正确的方法。在哪里声明const结构数组

我将展示我如何声明这一点,并希望对此有所评论或反馈。

文件:menu.h

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

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

文件: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

“在我心中,我认为这不是正确的方法” - 我们不读心意。 *为什么你这么想? – WhozCraig

+0

因为我的感觉,我认为这不是做这种声明的正确方法 – pjwl

+0

这只是重复了你之前所说的。我们明白了,但**为什么**你认为呢? *必须有*理由*,否则你不会在这里发布,对吧?你为什么认为这样宣称是错误的? – WhozCraig

回答

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

+0

我的文件中有很多const s_button,这不会给任何问题 – pjwl