Adding custom map tile layer using QGIS?
Try the new Tile Layer Plugin
.
The tile sources are stored in a tab delimitered text file. You can add sources as you want.
For the Arcgis tiles, try:
Arcgis Arcgis http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}.png 1 0 16 -180 -85.0 180.0 85.0
(note that this site's software has turned the tabs into blanks)
Try to use QuickMapService plugin. You can create custom service definition, and save it in user dir of QMS.
Starting with QGIS 2.18, there is a new feature called "Tile Server (XYZ)" in the QGIS Browser Panel that lets you easily establish a link to an online tile server without requiring additional plugins. Just right-click the button, choose "New Connection..." and insert the URL for Esri World Topographic Map:
After choosing a name for the tile layer (not shown; "Esri WorldTopoMap" in the example below), double-click the newly created tile server to add it to the QGIS Layers Panel. A more detailed description can be found here, among many others.