If they have 0 width, maybe it's because you didn't set their size flags to expand? I think you should expand them at least horizontally, but then that may also depend on what node you're using for a tab. And of course you have to expand the
TabContainer first, and probably also its parent control nodes, if it has any. Or else the children won't expand beyond the parent's size.
Any control node you place as child of a
TabContainer will show up as a tab (only the first one will have visibility turned on in the scene tree, by default). That's true even for slider bar nodes and labels, but you'll probably want to use containers to organize stuff in a tab.
The node name will be the title of the tab. From there, you can add children to each tab node, to fill them with content.
Tabs can be used too, although I'm not sure what they were actually intended for, considering they have options of their own like "Tab Align" and "Current Tab". I've used them once as tabs and they seemed to work fine. I've experimented with using one as a tab container and it didn't seem to work.
Godot itself doesn't seem to use
Tabs though, as one can see for example in the project-settings-editor.cpp (here it's using a
Control node as the tab "Input Map"):
Control *input_base = memnew(Control);