Каково обоснование пространства имен пользовательского интерфейса в Qt? - PullRequest
4 голосов
/ 01 декабря 2009

В процессе создания кода пользовательского интерфейса из файла пользовательского интерфейса Qt создает 2 класса с одинаковым определением.

class UI_CustomeUIClassFromUIFile
{
//code generated from UI file thru UIC
}
namespace ui
{
class CustomeUIClassFromUIFile public : UI_CustomeUIClassFromUIFile{};
}using namespace ui;

В чем причина наличия 2 классов, в которых только один находится внутри пространства имен пользовательского интерфейса, а другой - без пространства имен? Для поддержки компилятора, который не поддерживает пространство имен, есть также макрос, например QTNAMESPACE.

Ответы [ 2 ]

1 голос
/ 01 декабря 2009

Макрос - QT_BEGIN_NAMESPACE, который используется, если вы скомпилировали Qt внутри пользовательского пространства имен .

Что касается 2-х классов, я думаю, что вы ответили сами. Вы можете использовать Ui_XXX или Ui::XXX. Я всегда предпочитаю метод Ui::, но каждому свой.

Так что я думаю, что у меня нет реального ответа относительно логического обоснования, кроме как позволить программисту выбирать.

1 голос
/ 01 декабря 2009

qt / trolltech (и теперь nokia) опубликовали замечательный доклет по разработке API, в котором рассказывается о передовой практике использования API. Там может быть объяснение этому там .

...