Vehicular Ad Hoc Network (VANET) is a research field attracting growing attention. Some routing protocols for VANET focus on improvement of QoS, and some other routing protocols try to overcome the problems encountered in sparse networks. However, there are only few protocols which could consider both factors at the same time. This is because the QoS routing protocols are commonly used in dense networks, but not in sparse networks. Therefore, we propose a grid-based routing protocol which could provide a satisfying QoS in dense networks, and also could be applied in sparse networks. In order to improve QoS, we choose the best route according to traffic flow in route selection process. In addition, we utilize carry-and-forward concept for disconnected VANET problems. Compared with GVGrid which is also grid-based, our protocol is connectionless, meaning that the probability of broken link is lower. Furthermore, our protocol can be used as source and destination are mobile nodes, and it provides a mechanism for sparse networks also. The experiment results show that our protocol offers greater packet delivery ratio than GVGrid and GPSR either in dense networks or in sparse networks, or as both of source and destination are mobile nodes. Despite the fact that our protocol has longer delay, this is a trade-off due to providing a more stable route. Nevertheless, because of the longer delay, our protocol may be suitable for delay-tolerant applications.