The following solution is feasible only if you have a limited, manageable number of large polygons. First save each polygon as a separate, single-feature shapefile. Then for each one, do the following.
My method is to use the MMQGIS plugin to export the feature set as .csv nodes, then open the .csv in a spreadsheet, and do a custom filter for shape_id cells containing the string 'ring'. You can then place a flag, such as integer 1, into the fourth column, so it is entered only into the filtered rows. Then, take off the filter, and order all four columns by your flag column, largest-to-smallest so the 1's are at the top. Then select, copy, and paste the first three columns of only the flagged rows into a new workbook, and save as .csv.
Then you use MMQGIS again, this time importing your new .csv node file as polygons. This will be a layer that contains only the rings from the original polygon, so you can then easily copy and paste all these features into the relevant single-feature layer. This is now no longer single-feature, because it has the original polygon plus separate polygons for each ring. So then, select all features in the set, and merge them.
Once finished with all the feature sets, then you can copy and paste or otherwise rejoin them into a single feature set with all the rings filled.