Most industrial model predictive controllers (MPC) use the traditional two-layer structure developed in the early 1980's, where the upper layer defines optimal steady-state targets for inputs and outputs, while the lower layer calculates the control moves that drive the system towards these steady-state targets. Typically both layers use continuous quadratic programming (QP) formulations to derive the optimal solutions. On the other hand, advances in mixed-integer programming (MIP) algorithms and their successful application to solve large scheduling problems in reasonable time show that MIP formulations have the potential of being applied advantageously to the multivariable model predictive control problem. In this paper, we present mixed-integer quadratic programming (MIQP) formulations for both layers and show that several difficulties faced in the MPC practical implementation can be overcome with this approach. In particular, it is possible to set explicit priorities for inputs and outputs, define minimum moves to overcome hysteresis, and deal with digital or integer inputs.The proposed formulation is applied to 2 benchmark problems and to a simulated industrial system and the results compared with those achieved by a traditional continuous MPC. The solutions of the MIQP problems are derived by a computer implementation of the Outer Approximation method (OA) also developed as part of this work.