Precoding is an effective method to improve the transmission quality in multiple-input multiple-output (MIMO) systems. In a real-world system, the precoder is selected from a codebook, and its index is fed back to the transmitter. For a maximum-likelihood (ML) receiver, the criterion for precoder selection is equivalent to maximizing the minimum distance of the received signal constellation. T he derivation of the optimum solution, however, may be of high computational complexity due to the requirement of the exhaustive search. To reduce the computational complexity, a suboptimum solution based on singular value decomposition (SVD) has been proposed in literature. In this paper, we propose using a QR decomposition (QRD) based method for precoder selection. To further improve the system performance, we also propose an enhanced QRD-based selection method. With Givens rotations, the computational complexity of the enhanced QRD-based method can be effectively reduced. Finally, we combine precoding with receive antenna selection, and use the proposed QRD-based methods to solve this joint optimization problem. Simulation results show that the proposed approaches can significantly improve the system performance.